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中valueOf函数与toString方法深入理解
Dec 02 Javascript
jQuery选择器全集详解
Nov 24 Javascript
JS实现一个按钮的方法
Feb 05 Javascript
JavaScript实现的链表数据结构实例
Apr 02 Javascript
详解AngularJS中的表格使用
Jun 16 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
jquery验证手机号是否正确实例讲解
Nov 17 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
Jquery EasyUI $.Parser
Jun 02 jQuery
angular2实现统一的http请求头方法
Aug 13 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 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动态页生成静态页的3种常用方法
2014/11/13 PHP
ThinkPHP控制器详解
2015/07/27 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
python类的实例化问题解决
2019/08/31 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
Django实现随机图形验证码的示例
2020/10/15 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
请介绍一下WSDL的文档结构
2013/03/17 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
行政经理的岗位职责
2013/11/23 职场文书
乳制品整治工作方案
2014/05/29 职场文书
理财学专业自荐书
2014/06/28 职场文书
开服装店计划书
2014/08/15 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
增值税发票丢失证明
2015/06/19 职场文书
Apache POI的基本使用详解
2021/11/07 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers