作者areyo (没有名字的怪物)
看板AndroidDev
标题[问题] c# datetime ticks转换
时间Sat May 13 15:20:36 2017
各位大大
请教一下C#的Datetime ticks该怎麽转换到 java的去呢??
找了一些文章 C# & JAVA的基准值不一样
也找了另一个函式库Joda-time,但不晓得如何转换
故上来请教高手
谢谢
C#范例
static string GetDateTime()
{
DateTime now = DateTime.Now;
DateTime withoutYear =
new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Se
co
long t = withoutYear.Ticks / (long)20000000;
return ((UInt32)t).ToString("X000000");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.121.217.210
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1494660040.A.411.html
1F:→ fatrabitree: 不能C# tick <-> UTC string <-> JAVA tick这样吗?05/14 01:07
2F:→ ssccg: java或是其他用unix time的系统是从1970/1/1起算的05/14 01:55
3F:→ ssccg: C#的DateTime是从1/1/1起算,自己减掉这个时间差就可以05/14 01:57
4F:→ ssccg: 不过单位要自己处理05/14 02:05
5F:→ ssccg: 类似一楼说的用某种时间字串转换也是方法,通常用ISO 860105/14 02:12
6F:→ ssccg: 或是你也可以用自订的05/14 02:18
7F:→ ssccg: 但是C#的Ticks单位是100ns,java的Date只支援到1ms05/14 02:19
8F:→ ssccg: 你现在这个写法/20000000是转成单位为2秒喔...05/14 02:22
9F:→ ssccg: /10000才是同java的Date.getTime,还要加起始时间差05/14 02:23
10F:→ areyo: 糟糕,数学太差……05/16 22:14
所以我只要把java的ticks / 10000吗?
※ 编辑: areyo (122.121.219.46), 05/16/2017 22:21:08
11F:→ y3k: 我觉得C#自己要这样玩其实OK 但是也内建个函数帮忙转嘛.... 05/17 18:21
12F:→ ssccg: .NET 4.6有新增这个内建函数了 05/17 21:35
13F:→ ssccg: DateTimeOffset.From/ToUnixTimeSeconds/Milliseconds 05/17 21:36
14F:→ ssccg: java的就是这个UnixTimeMilliseconds 05/17 21:36
15F:→ ssccg: 用算的好像 (C# Ticks - 621355968000000000)/10000 = java 05/17 21:39