国产探花免费观看_亚洲丰满少妇自慰呻吟_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# 時間日期格式轉換的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝南县| 垣曲县| 称多县| 广南县| 永仁县| 盐山县| 杂多县| 孟津县| 望都县| 乾安县| 武威市| 休宁县| 汝州市| 凤台县| 周宁县| 庄河市| 通许县| 洛川县| 堆龙德庆县| 双柏县| 宣城市| 万年县| 军事| 崇州市| 汉中市| 乌拉特前旗| 花垣县| 吉木萨尔县| 巴青县| 乡宁县| 枣阳市| 东兴市| 鹤庆县| 项城市| 清远市| 筠连县| 法库县| 册亨县| 郎溪县| 乐安县| 西华县|