繁体   English   中英

C#DateTime不正确

[英]C# DateTime not correct

我在获取本周出现的时间方面存在差异,这可能是由于美国的夏令时造成的。在C#和Java(Android)中存在小时差异。 我希望Java的行为与C#相同。

Windows 10-C#

value = DateTime.Now;
TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
System.Diagnostics.Trace.WriteLine("span: " + (int)span.TotalSeconds);

Unix纪元秒:
1489764265
转换为:
2017年3月17日星期五15:24:25 GMT

Java-Android Studio-在Samsung T5330-NU上运行

Date date = new Date(); // current date and time
Integer.toString(ConvertToTimestamp(date))

单位纪元秒:
1489760686
转换为:
2017年3月17日星期五14:24:46 GMT

秒(:25与:46)很好。 时间是问题所在(15比14)。必须以某种方式节省夏时制。

该怎么办?

用这个来转换Unix时代的时间:
http://www.onlineconversion.com/unix_time.htm

编辑:
原始Java代码会像这样获取当前日期/时间:

Calendar cal = Calendar.getInstance();

根据@AkosNagy的评论,我尝试了:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("MST"));

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("MDT"));

但没有区别。

编辑:
更改了标题,因为这最终是关于C#的问题,以及为什么C#没有给出正确的时间。

编辑:这是我正在寻找的行:

Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()不会返回您认为的样子。 您需要指定时区:

new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime()

伦敦的1970/1/1 00:00:00.000实际上是1970/1/1 01:00:00.000 UTC(在Unix时代,我们处于永久的夏令时)。


否则计算机的时钟/时区可能错误。 毕竟,您在Fri, 17 Mar 2017 15:24:25 GMT之前发布了代码(大约是Fri, 17 Mar 2017 14:40:00 GMT )。

但是无论如何,由于您不必依赖本地计算机的配置,因此它可以使代码更加健壮地指定UTC时区。

(请检查下面的内容)

在c#中, DateTime.Now返回计算机的本地时间,因此时区无关紧要,如MSDN文档中所示

对于Java,我发现这些代码段使用了其他方法,如LocalDateTime.now()

编辑:

再次阅读您的答案后,我了解到您的问题出在C#代码上。 那是我的解决方案:而不是那个Unix纪元秒的事情:

value = DateTime.Now;
TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
System.Diagnostics.Trace.WriteLine("span: " + (int)span.TotalSeconds);

只需使用此:

//first, get the corrent time
DateTime date = DateTime.Now;
//print the time
Console.WriteLine(date.ToString());
// For en-US culture, for other culture type refer to MSDN link
//output mm/dd/yyyy hh:mm:ss AM/pm

如果您确实需要Unix纪元秒,请参考此线程并检查您的系统时钟。

希望我能帮上忙!

编辑:我将链接更改为您需要的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM