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 相关文章推荐
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
正则表达式替换html元素属性的方法
Nov 26 Javascript
简单实现JS计算器功能
Dec 21 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
小程序实现展开/收起的效果示例
Sep 22 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 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实现的下载远程文件类定义与用法示例
2017/07/05 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
理解javascript模块化
2016/03/28 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
layui复选框限制选择个数的方法
2019/09/18 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python如何实现邮件功能
2020/05/27 Python
keras打印loss对权重的导数方式
2020/06/10 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
会计学专业自荐信
2014/06/25 职场文书
老龙头导游词
2015/02/11 职场文书
大专护理专业自荐信
2015/03/25 职场文书