2014-03-03 43 views
1

我正在从API请求我的应用程序。其中声称日期/时间格式为长。我正在尝试使用以下几行来转换它。长转换为DateTime在Windows Phone的C#

DateTime? dt = new DateTime(long.Parse(detail.CREATEDTIME)); 
MessageBox.Show(detail.CREATEDTIME + "=>" + dt.Value.ToString("yyyy-MM-dd")); 

实际的输出如下:

1393559958788=>0001-01-02 

但预期输出如下:

1393559958788=>2014-02-28 

预期的输出是从Java。我如何使用C#做到这一点?

回答

4

最有可能的long值表示Unix Timestamp

检查这个question如何转换。

但是请注意,你的价值观似乎是毫秒,因为1/1/1970,不被秒,所以你可能需要使用.AddMilliseconds,而不是.AddSeconds,

的代码我用来确认这是:

DateTime d = new DateTime(1970, 1, 1,0,0,0,0,DateTimeKind.Utc).AddMilliseconds(1393559958788); 
Console.WriteLine(d); // 28/02/2014 03:59:18 
+0

谢谢..它的工作.. – Presse

1

这是你在找什么:

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
dt = dt.AddMilliseconds(long.Parse(detail.CREATEDTIME)).ToLocalTime(); 
MessageBox.Show(detail.CREATEDTIME + "=>" + dt.Value.ToString("yyyy-MM-dd")); 
+0

由于它的工作原理.. – Presse