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 相关文章推荐
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
vue 实现边输入边搜索功能的实例讲解
Sep 16 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
微信小程序实现工作时间段选择
Feb 15 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
Sep 04 Javascript
layui-select动态选中值的例子
Sep 23 Javascript
如何实现js拖拽效果及原理解析
May 08 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
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
前端必学之PHP语法基础
2016/01/01 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python给图像添加噪声具体操作
2019/03/03 Python
对于Python深浅拷贝的理解
2019/07/29 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
python 利用zmail库发送邮件
2020/09/11 Python
Python类class参数self原理解析
2020/11/19 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
文明寄语大全
2014/04/11 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
党建工作汇报材料
2014/12/24 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android