Строка не была распознана как допустимая дата-время c # Xamarin

#c# #android #xamarin #xamarin.android

#c# #Android #xamarin #xamarin.android

Вопрос:

  string createddate = "10/14/2016 11:46 AM";
 DateTime date = Convert.ToDateTime(createddate);
 

Я пытаюсь преобразовать строку в формат даты и времени, на некоторых устройствах это работает, некоторые устройства выдают вышеуказанное исключение. почему? пожалуйста, помогите мне решить эту проблему.

Комментарии:

1. Скорее всего, на нее влияет культура на каждом устройстве.

Ответ №1:

Проблема в том, что каждое устройство потенциально может иметь разную культуру. Вы можете игнорировать язык и заставить его распознавать определенный формат даты в вашей строке:

 DateTime date = DateTime.ParseExact(
    createddate , "MM/dd/yy HH:mm tt", CultureInfo.InvariantCulture);
 

Стандартные форматы строк даты и пользовательские форматы строк даты см. в разделе MSDN.

Комментарии:

1. Что вы подразумеваете под «он не показывает AM / PM»? Что этого не показывает? Итоговая дата? Свидания есть свидания. То, как они отображаются, зависит от устройства или приложения, которые их отображают. Например, если вы говорите о часах в Visual Studio, возможно, ваш компьютер по какой-то причине настроен на отображение 24-часового формата времени. Это станет более очевидным, если вы попробуете сделать это со временем после 12:00 вечера; 1:00 ВЕЧЕРА будет 13:00.

Ответ №2:

Попробуйте это:

  string createddate = "10/14/2016 11:46 AM";
   DateTime dateTime;
   DateTime.TryParse(createddate, out dateTime);
 

Ответ №3:

Вам необходимо определить формат даты и времени при преобразовании a string в DateTime значение. Угадывание формата по умолчанию или надежда на правильный формат приведут к различным ошибкам. Это один из наиболее распространенных источников ошибок, которые не могут быть воспроизведены на компьютере разработчика.

Пример, чтобы сделать это правильно:

 var date = DateTime.ParseExact("10/14/2016 11:46 AM", 
                               "MM/dd/yyyy HH:mm tt", 
                                CultureInfo.InvariantCulture);