DateTime.Now值因Android设备而异

时间:2015-09-15 10:05:57

标签: c# android datetime xamarin

我正在开发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“”。它无助于我解决问题

2 个答案:

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