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 相关文章推荐
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
js带闹铃功能的倒计时代码
Sep 29 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
小程序自定义圆形进度条
Nov 17 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
Terran历史背景
2020/03/14 星际争霸
php生成xml简单实例代码
2009/12/16 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
JS实现div居中示例
2014/04/17 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
js实现随机点名小功能
2017/08/17 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
python获取url的返回信息方法
2018/12/17 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
高考自主招生自荐信
2013/10/20 职场文书
大学毕业感言200字
2014/03/09 职场文书
聘用意向书范本
2014/04/01 职场文书
水毁工程实施方案
2014/04/01 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
股东授权委托书
2014/10/15 职场文书
初中语文教学随笔
2015/08/15 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技