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 相关文章推荐
图片之间的切换
Jun 26 Javascript
javascript数组的扩展实现代码集合
Jun 01 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
jQuery javaScript捕获回车事件(示例代码)
Nov 07 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
Mongoose经常返回e11000 error的原因分析
Mar 29 Javascript
JS script脚本中async和defer区别详解
Jun 24 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使用者状态管理功能的应用
2006/10/09 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
百度地图api如何使用
2015/08/03 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python MySQLdb使用教程详解
2018/03/20 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
python pygame实现2048游戏
2018/11/20 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python中K-means算法基础知识点
2021/01/25 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
艺术设计专业个人求职信
2013/09/21 职场文书
电子商务专业推荐信范文
2013/12/02 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
大学生标准自荐书
2014/06/15 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
小学运动会宣传稿
2015/07/23 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书