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,实现插入排序实现代码
Jul 31 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
JavaScript+canvas实现七色板效果实例
Feb 18 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
Apr 21 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
js array数组对象操作方法汇总
Mar 18 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
Sep 10 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 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
php格式化日期和时间格式化示例分享
2014/02/24 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
JS查看对象功能代码
2008/04/25 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
django的ORM模型的实现原理
2019/03/04 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
医学院学生的自我评价分享
2013/11/19 职场文书
金融行业务员的自我评价
2013/12/13 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技