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 Date对象 日期获取函数
Dec 19 Javascript
jquery插件 autoComboBox 下拉框
Dec 22 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
Sep 21 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
Angular directive递归实现目录树结构代码实例
May 05 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
微信小程序 实现点击添加移除class
Jun 12 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 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判断用户是否关注微信公众号
2016/07/22 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python选择排序算法实例总结
2015/07/01 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
10条PHP编程习惯
2014/05/26 面试题
音乐教育专业自荐信
2014/09/18 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
九年级历史教学反思
2016/02/19 职场文书
springboot用户数据修改的详细实现
2022/04/06 Java/Android
Linux中如何安装并部署Redis
2022/04/18 Servers