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 相关文章推荐
IE下使用cloneNode注意事项分享
Nov 22 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
three.js欧拉角和四元数的使用方法
Jul 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 第二节 数据类型之数值型
2012/04/28 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
php桥接模式应用案例分析
2019/10/23 PHP
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
wxPython实现绘图小例子
2019/11/19 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
新农村建设标语
2014/06/24 职场文书
以权谋私检举信范文
2015/03/02 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python