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 相关文章推荐
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
AngularJS语法详解(续)
Jan 23 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
实现高性能javascript的注意事项
May 27 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
详解PHP归并排序的实现
2016/10/18 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
代码讲解Python对Windows服务进行监控
2018/02/11 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
酒吧总经理岗位职责
2013/12/10 职场文书
初二政治教学反思
2014/01/12 职场文书
仙境之桥观后感
2015/06/16 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技