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实现的像java、c#之类的sleep暂停的函数代码
Mar 04 Javascript
function foo的原型与prototype属性解惑
Nov 19 Javascript
js string 转 int 注意的问题小结
Aug 15 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
js图片轮播特效代码分享
Sep 07 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
jquery事件绑定解绑机制源码解析
Sep 19 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
Jul 25 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 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四种基本排序算法示例
2015/04/09 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
Python实现k-means算法
2018/02/23 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python config文件的读写操作示例
2019/09/27 Python
详解Django配置JWT认证方式
2020/05/09 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
社会实践自我鉴定
2013/11/07 职场文书
人事专员的岗位职责
2014/03/01 职场文书
保安公司服务承诺书
2014/05/28 职场文书
学校开除通知书
2015/04/25 职场文书
班主任寄语2016
2015/12/04 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android