我想以毫秒为单位节省时间,我希望当前的日期是2009年1月10日上午10点.
这在几毫秒内是1231581600442,我知道每毫秒有10,000个滴答,但DateTime没有返回正确的时间,如果我在那里硬编码并获得滴答,它不会返回我所拥有的.
我的代码:
DateTime dateTime = new DateTime(2009, 1, 10, 10, 0, 0, 0);
Debug.Log(player.GetTime() + " - " + dateTime.Ticks);
Debug.Log("DateTime ms: " + dateTime.Ticks / TimeSpan.TicksPerMillisecond);
Debug.Log("Player ms in ticks: " + (player.GetTime() * TimeSpan.TicksPerMillisecond));
Run Code Online (Sandbox Code Playgroud)
输出:
1231581600442 - 633671784000000000
DateTime ms: 63367178400000
Player ms in ticks: 12315816004420000
Run Code Online (Sandbox Code Playgroud)
在Java中,我将它们从DateTime转换为可读日期的毫秒数
10 January 3978 10:00:00
有谁知道为什么这是不正确的以及如何解决它?
在Java的时代正在开始的1970年(1970-01-01T00:00:00Z),但C#时代是0001-01-01.
请参阅Java Instant 文档.
...该类存储一个代表epoch-seconds的长整数和一个代表纳秒秒的int,它总是在0到999,999,999之间.纪元秒是从1970-01-01T00:00:00Z的标准Java纪元测量的,其中纪元之后的时刻具有正值,而早期时刻具有负值.
请参阅DateTime 文档.
时间值以称为刻度的100纳秒单位进行测量,特定日期是格里高利历日历中自公元0001年1月1日午夜12点起的刻度数(不包括闰秒添加的刻度) .
你需要考虑到这个:
DateTime dateTime = new DateTime(2009, 1, 10, 10, 0, 0, 0);
DateTime javaEpoch = new DateTime(1970, 1, 1);
long msSinceJavaEpoch = (dateTime.Ticks - javaEpoch.Ticks)/TimeSpan.TicksPerMillisecond;
// Use msSinceJavaEpoch to convert to Java time.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |