2015-09-15 2 views
1

Я работаю над проектом Android Xamarin. В моем проекте DateTime.Now Метод возвращает значение по-разному на основе ОС AndroidЗначение DateTime.Now отличается от Android-устройств

для Android OS = 4.0.4 Ниже приводится значение DateTime.Now

DateTime.Now {15/09/2015 14 : 41: 26}

для Android OS> 4.0.4 Ниже приводится значение DateTime.Now

DateTime.Now {9/15/2015 2:41:26 PM}

Это вызывает вопрос, потому что, ниже моя проверка

Convert.ToDateTime("9/16/2017 12:16:00 PM") > DateTime.Now) 

Я озадачен этим вопросом. Проверка будет работать только для ОС Android> 4.0.4. Любая помощь будет заметна!

Мои пытались аутов: 1. Пытался преобразовать DateTime следующим

DateTime.Now.ToString("M/dd/yyyy hh:mm:ss tt") 

Однако он возвращается значение, как "" 9/16/2015 12:16:00 вечера "". Это не помогает мне исправить проблему.

ответ

1

Это должно быть вызвано разными языками по умолчанию на устройствах.

Следующие должны работать независимо от локали по умолчанию

System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US"); 
Convert.ToDateTime("9/16/2017 12:16:00 PM", enUS); 
+0

Fantastic..You спас мое время!! –

+0

Рад, что это помогло. –

1

Используйте этот код,

public static DateTime? ToNullableDateTime(string dateTime) 
{ 
    if (string.IsNullOrEmpty(dateTime)) 
     return (DateTime?)null; 

    var ci = CultureInfo.InvariantCulture; 
    var formats = new[] { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "M-d-yyyy", "dd-MM-yyyy", "dd/MM/yyyy", "dd/MM/yyyy HH:mm:ss", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy" } 
      .Union(ci.DateTimeFormat.GetAllDateTimePatterns()).ToArray(); 
    var dt = DateTime.ParseExact(dateTime, formats, ci, DateTimeStyles.None); 

    return dt; 
} 

Затем преобразовать его в формат, который вы хотите,

var stringDate = myDateTime.ToString("dd/MM/yyyy HH:mm:ss"); 
Смежные вопросы