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的变量作用域深入理解
Oct 25 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
Jan 23 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
js绘制购物车抛物线动画
Nov 18 Javascript
JavaScript实现动态增删表格的方法
Mar 09 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 Javascript
js仿淘宝放大镜效果
Dec 28 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
javascript打印输出json实例
2013/11/11 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
索桥的故事教学反思
2014/02/06 职场文书
文化建设工作方案
2014/05/12 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
MongoDB支持的索引类型
2022/04/11 MongoDB