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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
jQuery中:contains选择器用法实例
Dec 30 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
详解Node.js如何处理ES6模块
May 15 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 和 COM
2006/10/09 PHP
用php来检测proxy
2006/10/09 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python中安装easy_install的方法
2018/11/18 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
postman传递当前时间戳实例详解
2019/09/14 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
某科技软件测试面试题
2013/05/19 面试题
有针对性的求职自荐信
2013/11/14 职场文书
2014年大学生自我评价
2014/01/19 职场文书
作文评语集锦大全
2014/04/23 职场文书
公积金贷款承诺书
2015/04/30 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
大学组织委员竞选稿
2015/11/21 职场文书