国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js和C# 時間日期格式轉換的簡單實例

2019-11-20 09:52:06
字體:
來源:轉載
供稿:網友

下午在搞MVC和EXTJS的日期格式互相轉換遇到了問題,我們從.NET服務器端序列化一個DateTime對象的結果是一個字符串格式,如 '/Date(1335258540000)/' 這樣的字串。

整數1335258540000實際上是一個1970 年 1 月 1 日 00:00:00至這個DateTime中間間隔的毫秒數。通過javascript用eval函數可以把這個日期字符串轉換為一個帶有時區的Date對象,如下

用var date = eval('new ' + eval('/Date(1335258540000)/').source) 這樣即可得到一個JS對象

通過alert(date)查看比較清楚。

Tue Apr 24 17:09:00 UTC+0800 2012

上面是C# JSON序列化日期自動得到的字符串,也可以通過C#寫一個函數來獲取這個數字,例如

public long MilliTimeStamp(DateTime TheDate)    {      DateTime d1 = new DateTime(1970, 1, 1);       DateTime d2 = TheDate.ToUniversalTime();      TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);      return (long)ts.TotalMilliseconds;    } 

通過上面的函數跟利用JSON序列化獲取到的字符串中的整數是一樣的。

但是,在從客戶端返回服務器端的時候,日期卻遇到了問題,如何將javascript的Date對象傳回服務器端呢?

先通過javascript Date中的getTime()來獲取到這個整數,然后服務器端對這個整數進行解析,‘構造'成一個C#的DateTime對象。思路大概是這樣的,不過在逆向回去的時候卻遇到了點麻煩。

public DateTime ConvertTime(long milliTime)    {      long timeTricks = new DateTime(1970, 1, 1).Ticks + milliTime * 10000 ;      return new DateTime(timeTricks);    }

通過ConvertTime得到的結果發現時間少了8個小時,這剛好是服務器的時區,東八區時間,也就是說還要加上8小時的納秒,因為C#的時間戳單位是一千萬分之一秒,一個小時3600秒,即8*3600*10000000

所以修改了ConvertTime函數,正確的如下:

public DateTime ConvertTime(long milliTime)    {      long timeTricks = new DateTime(1970, 1, 1).Ticks + milliTime * 10000 + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours * 3600 * (long)10000000;      return new DateTime(timeTricks);    }

以上這篇js和C# 時間日期格式轉換的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍山县| 四会市| 桂平市| 五大连池市| 类乌齐县| 昭平县| 合作市| 运城市| 黄骅市| 环江| 叶城县| 军事| 福海县| 德州市| 元氏县| 湖北省| 靖边县| 扬州市| 峨眉山市| 永济市| 乡宁县| 壶关县| 祁门县| 天峨县| 平湖市| 于都县| 南昌市| 额济纳旗| 峨山| 西乌珠穆沁旗| 嘉禾县| 蒙阴县| 紫云| 桦南县| 讷河市| 沅陵县| 中牟县| 剑河县| 益阳市| 敖汉旗| 新疆|