輕松實現(xiàn)Java與C#時間轉(zhuǎn)換
作者:佚名 
  筆者這兩天做了一個Web Service,要記錄操作時間,定義為long型數(shù)據(jù),因為Java中可以把當(dāng)前時間表示成long類型,所以本文政要講到如何實現(xiàn)Java與C#時間轉(zhuǎn)換。
 Java中可以用System.currentTimeMillis() 獲取當(dāng)前時間的long形式,它的標(biāo)示形式是從1970年1月1日起的到當(dāng)前的毫秒的數(shù)。Web Service 是用Java寫的,把這個long型數(shù)據(jù)轉(zhuǎn)成timestamp再存入MySQL,所以用調(diào)用我們的Web Service可以直接把這個值傳入。 
但是.NET下計算時間的方式不太一樣,它是計算單位是Ticks,這里就需要做一個C#時間轉(zhuǎn)換。關(guān)于Ticks,msdn上是這樣說的:
A single tick represents one hundred nanoseconds or one ten-millionth of a second. The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001.
就是從公元元年元月1日午夜到指定時間的千萬分之一秒了,為了和Java比較,說成萬分之一毫秒。
( System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks)/10000;
如果要得到Java中 System.currentTimeMillis() 一樣的結(jié)果,就可以做Java與C#時間轉(zhuǎn)換,寫成上面那樣,也可以這樣寫:
 但是.NET下計算時間的方式不太一樣,它是計算單位是Ticks,這里就需要做一個C#時間轉(zhuǎn)換。關(guān)于Ticks,msdn上是這樣說的:
A single tick represents one hundred nanoseconds or one ten-millionth of a second. The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001.
就是從公元元年元月1日午夜到指定時間的千萬分之一秒了,為了和Java比較,說成萬分之一毫秒。
( System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks)/10000;
如果要得到Java中 System.currentTimeMillis() 一樣的結(jié)果,就可以做Java與C#時間轉(zhuǎn)換,寫成上面那樣,也可以這樣寫:
- TimeSpan ts=new TimeSpan( System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks);
 - (long)ts.TotalMilliseconds;
 
需要注意的是這里是用的 System.DateTime.UtcNow 而不是 System.DateTime.Now ,因為我們在東八區(qū),如果用后面那種形式就會發(fā)現(xiàn)時間會和想象當(dāng)中的差了8個小時。Java與C#時間轉(zhuǎn)換到這里就徹底實現(xiàn)了。
【編輯推薦】
責(zé)任編輯:彭凡 
                    來源:
                    中國自學(xué)編程網(wǎng)
 














 
 
 






 
 
 
 