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 相关文章推荐
用Greasemonkey 脚本收藏网站会员信息到本地
Oct 26 Javascript
减少访问DOM的次数提升javascript性能
Feb 24 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
浅析javascript函数表达式
Feb 10 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
jquery validate表单验证插件
Sep 06 Javascript
在vue项目中,将juery设置为全局变量的方法
Sep 25 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 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自动获取目录下的模板的代码
2010/08/08 PHP
php中session_unset与session_destroy的区别分析
2011/06/16 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php批量修改表结构实例
2017/05/24 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
python 消费 kafka 数据教程
2019/12/21 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python对象的属性访问过程详解
2020/03/05 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
给海归自荐信的建议
2013/12/13 职场文书
计算机相关的自我评价
2014/01/15 职场文书
满月酒主持词
2014/03/27 职场文书
《假如》教学反思
2014/04/17 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
抢劫罪辩护词
2015/05/21 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL