js和C# 时间日期格式转换的简单实例


Posted in Javascript onMay 28, 2016

下午在搞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# 时间日期格式转换的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 序列化对象实现代码
Dec 18 Javascript
Jquery ui css framework
Jun 28 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
jQuery解析json数据实例分析
Nov 24 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
javascript计算对象长度的方法
Oct 25 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
react-native使用leanclound消息推送的方法
Aug 06 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
layer扩展打开/关闭动画的方法
Sep 23 Javascript
vue实现五子棋游戏
May 28 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
Jul 28 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 #Javascript
深入理解JS函数的参数(arguments)的使用
May 28 #Javascript
深入理解js中this的用法
May 28 #Javascript
关于function类中定义变量this的简单说明
May 28 #Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
May 28 #Javascript
动态更新highcharts数据的实现方法
May 28 #Javascript
不同js异步函数同步的实现方法
May 28 #Javascript
You might like
超级简单的发送邮件程序
2006/10/09 PHP
UCenter Home二次开发指南
2009/05/28 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
php伪静态之APACHE篇
2014/06/02 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
js简单抽奖代码
2015/01/16 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
python字符串string的内置方法实例详解
2018/05/14 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
幼儿园教师教育感言
2014/02/28 职场文书
给校长的建议书100字
2014/05/16 职场文书
公司口号大全
2014/06/11 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
伏羲庙导游词
2015/02/09 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
证婚人致辞精选
2015/07/28 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python