TL; DR
При попытке отправить DateTime между различными системами, NOT преобразуйте его в строку, используя ToString () без использования параметра DateTime.ToBinary и DateTime.FromBinary вместо ИЛИ, если вы хотите, чтобы строка указывала культуру, например,
var datetimeAsString = thisDate.ToString(new CultureInfo("en-us"));
DateTime.Parse(datetimeAsString, new CultureInfo("en-us"));
PS: я думаю, что это относится не только к ситуациям, когда вы хотитеобмениваться данными, но также и в других ситуациях, поэтому их следует рассматривать как общий совет.
-
Проблема заключалась в том, что программное обеспечение, отправившее DateTime, преобразовало DateTime.ToString () вНемецкий формат, хотя программное обеспечение было на английском языке. Принимающее программное обеспечение иногда было на немецком, а иногда на английском. Программное обеспечение с немецким языком было в состоянии использовать DateTime.Parse для немецкой строки, другие системы не были.
Решением было не преобразовать DateTime в строку, а в длинный, используя DateTime. ToBinary метод. Я думаю, что было бы также возможно решить это с CultureInfo.InvariantCulture, но мы думали, что долго было намного чище.