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 相关文章推荐
解决 FireFox 下[使用event很麻烦] 的问题.
Aug 22 Javascript
textContent在Firefox下与innerText等效的属性
May 12 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 Javascript
Ajax跨域实现代码(后台jsp)
Jan 21 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
JS实现元素上下左右移动效果
Oct 18 Javascript
浅谈Vue Element中Select下拉框选取值的问题
Mar 01 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 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实现数字补零功能的2个函数介绍
2014/05/12 PHP
php代码架构的八点注意事项
2016/01/25 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
如何在Python中编写并发程序
2016/02/27 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
python的slice notation的特殊用法详解
2019/12/27 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
老同学聚会感言
2014/02/23 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
师范大学生求职信
2014/06/13 职场文书
2015年安全月活动总结
2015/03/26 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android