js和C# 时间日期格式转换的简单实例

 更新时间:2016年05月28日 16:21:02   投稿:jingxian  
下面小编就为大家带来一篇js和C# 时间日期格式转换的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

下午在搞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 快捷键设置实现代码

    屏蔽Alt+F4等快捷键 IE Javascript快捷键操作
    2009-03-03
  • JS实现的全选、全不选及反选功能【案例】

    JS实现的全选、全不选及反选功能【案例】

    这篇文章主要介绍了JS实现的全选、全不选及反选功能,涉及javascript事件响应、元素遍历与属性动态操作相关实现技巧,需要的朋友可以参考下
    2019-02-02
  • JS+CSS实现大气清新的滑动菜单效果代码

    JS+CSS实现大气清新的滑动菜单效果代码

    这篇文章主要介绍了JS+CSS实现大气清新的滑动菜单效果代码,通过鼠标事件结合定时函数实现页面元素动态变换的效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏

    基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏

    但是由于浏览器的兼容性问题,之前用的很多代码都失去效果,下面就给出一段能够兼容各个浏览器的代码,也不能够算是兼容,只能说在不支持的浏览器中能够给出提示,对js兼容各个浏览器设为首页加入收藏相关知识感兴趣的朋友可以参考下本文
    2016-01-01
  • js 鼠标点击事件及其它捕获

    js 鼠标点击事件及其它捕获

    这段代码是用来做,点击一个按纽打开个div,在页面空白处点击鼠标隐藏这个div
    2009-06-06
  • canvas知识总结

    canvas知识总结

    本文主要介绍了canvas的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Javascript中的匿名函数与封装介绍

    Javascript中的匿名函数与封装介绍

    这篇文章主要介绍了Javascript中的匿名函数与封装介绍,本文分析了jQuery 封装、Backbone 封装、Underscore 封装等内容,需要的朋友可以参考下
    2015-03-03
  • 原生js三级联动的简单实现代码

    原生js三级联动的简单实现代码

    下面小编就为大家带来一篇原生js三级联动的简单实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • JavaScript鼠标禁止右键禁止打开控制台及键盘禁用

    JavaScript鼠标禁止右键禁止打开控制台及键盘禁用

    这篇文章主要给大家介绍了关于JavaScript鼠标禁止右键禁止打开控制台及键盘禁用的相关资料,实现禁止右键和禁止打开控制台是一种常见的网页保护技巧,可以防止非法复制、盗取网页资源等安全问题,需要的朋友可以参考下
    2023-10-10
  • js基于cookie方式记住返回页面用法示例

    js基于cookie方式记住返回页面用法示例

    这篇文章主要介绍了js基于cookie方式记住返回页面的用法,涉及javascript操作cookie及php针对cookie的判断技巧,需要的朋友可以参考下
    2016-05-05

最新评论