作者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/m.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