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提供睡眠功能(sleep) 自编译JS引擎
Aug 16 Javascript
jquery实现每个数字上都带进度条的幻灯片
Feb 20 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
详解AngularJS实现表单验证
Dec 10 Javascript
jQuery插件imgPreviewQs实现上传图片预览
Jan 15 Javascript
js简单倒计时实现代码
Apr 30 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
深入理解基于vue-cli的vuex配置
Jul 24 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
百度小程序之间的页面通信过程详解
Jul 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 一元分词算法
2009/11/30 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
angularJS开发注意事项
2018/05/26 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
物业管理员岗位职责范文
2013/11/25 职场文书
同学会邀请书大全
2014/01/12 职场文书
11月红领巾广播稿
2014/01/17 职场文书
小学捐书活动总结
2014/07/05 职场文书
党校党性分析材料
2014/12/19 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
教师节主题班会教案
2015/08/17 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
Hive日期格式转换方法总结
2022/06/25 数据库