如何将Java.Util.Date转换为System.DateTime

Dv_*_*_MH 14 datetime android

在Xamarin.Android中,您使用.NET和Java.

我得到Java.Util.Date的返回值,然后我需要输入相同的值作为只需要System.DateTime的参数

这就是我目前的做法

public static DateTime ConvertJavaDateToDateTime(Date date)
{
    var a = date.ToGMTString();
    var b = date.ToLocaleString();
    var c = date.ToString();
    DateTime datetime = DateTime.ParseExact(date.ToGMTString(), "dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture);
    return datetime;
}
Run Code Online (Sandbox Code Playgroud)

但是在任何一个月的前9天,我只获得当天的1位数,而DateTime.ParseExact函数正在寻找dd(即当天的2位数).

a是一个值为"1 Sep 2014 14:32:25 GMT"的字符串

b是一个值为"2014年9月1日16:32:25"的字符串

c是一个值为"Mon Sep 01 16:32:25 EET 2014"的字符串

我希望我能为这个问题找到一个简单,快速,可靠和一致的解决方案:D

Den*_*nis 12

java.util.Date有一个getTime()方法,它以毫秒值返回日期.该值是自1970年1月1日格林威治标准时间午夜以来的毫秒数.

有了这些知识,你可以System.DateTime像这样构造一个匹配这个值的:

public DateTime FromUnixTime(long unixTimeMillis)
{
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    return epoch.AddMilliseconds(unixTimeMillis);
}
Run Code Online (Sandbox Code Playgroud)

(从这个答案中取出的方法)