DateTime.现在,Android设备的价值有所不同

本文关键字:有所不同 现在 Android DateTime | 更新日期: 2023-09-27 18:12:44

我正在做一个Xamarin Android项目。在我的项目中基于Android OS的DateTime.Now方法返回值不同

Android = 4.0.4以下为DateTime的值。现在

DateTime。现在 {15/09/2015 14:41:26}

Android操作系统> 4.0.4以下为DateTime的值。现在

DateTime。现在 {9/15/2015 2:41:26 PM}

这会导致问题,因为下面是我的验证

Convert.ToDateTime("9/16/2017 12:16:00 PM") > DateTime.Now)
我被这个问题难住了。该验证仅适用于Android操作系统> 4.0.4。任何帮助都是非常感激的!

My tried out:1. 尝试将DateTime转换为如下

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

返回值为"9/16/2015 12:16:00 pm"。它不能帮助我解决这个问题

DateTime.现在,Android设备的价值有所不同

这应该是由设备上不同的默认Locale引起的。

以下内容应该独立于默认Locale

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

使用此代码,

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");