我正在开发Xamarin Android项目。在我的项目中
DateTime.Now
方法根据Android操作系统以不同方式返回值
对于Android OS = 4.0.4以下是DateTime.Now的值
DateTime.Now {15/09/2015 14:41:26}
对于Android操作系统> 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 OS> 4.0.4。任何帮助都会很明显!
我试过了: 1.试图按如下方式转换DateTime
DateTime.Now.ToString("M/dd/yyyy hh:mm:ss tt")
然而,它的返回值为“”2015年9月16日下午12:16:00“”。它无助于我解决问题
答案 0 :(得分:1)
它应该由设备上的不同默认语言环境引起。
以下内容应独立于默认的区域设置
System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
Convert.ToDateTime("9/16/2017 12:16:00 PM", enUS);
答案 1 :(得分: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");