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"。它不能帮助我解决这个问题
这应该是由设备上不同的默认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");