将 javascript 中的 timestamp(时间戳) 转 c# 的 datetime类型

Posted 好好学习天天向上 - lhio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将 javascript 中的 timestamp(时间戳) 转 c# 的 datetime类型相关的知识,希望对你有一定的参考价值。

  相信很多人在工作中都会遇到需要将 timestamp(时间戳) 转换为 datetime 类型,特别是做网站开发的时候,有时候需要将前端传递过来的 timestamp 转为 datetime 类型,而在转的过程中发现了需要注意的地方。

  首先先说说在 javascript 中产生 timestamp 的方式,一般有以下几种方式:

    var date = new Date();
    
    //获取timestamp
    var timestamp1 = date.getTime();
    var timestamp2 = Date.now();
    var timestamp3 = date.valueOf();
    
    //输出当前时间
    console.info("date.toString:",date.toString());
    console.info("date.toLocaleString:",date.toLocaleString());
    
    //输出时间戳
    console.info("date.getTime:",timestamp1);
    console.info("date.now:",timestamp2);
    console.info("date.valueOf:",timestamp3);

  

  我当前结果显示:

 

 

  

 

 

 

 

 

  然后在c#中需要将时间戳转换为timestamp(至于前端怎么传递数据到后端,不在此章范围):

    string timestampStr = "1481038051980";
    long timestamp = long.Parse(timestampStr);
    DateTime dt = new DateTime(1970,1,1,0,0,0).AddMilliseconds(timestamp);
    Console.WriteLine(dt);

    Console.ReadKey();

  然而,神奇的事情发生了,显示结果如下:

  

  不对啊,上面 js 产生的时间戳的时间是 2016/12/6 下午11:27:31 ( Tue Dec 06 2016 23:27:31 ) ,也就是说日期显示是对的,但时间不对, 一直在纠结,甚至怀疑是不是记错 js 时间戳的生成方式了,于是查文档,没错啊,那是怎么回事呢?最后突然想到,会不会和时区有关,于是加了一行代码:

    string timestampStr = "1481038051980";
    long timestamp = long.Parse(timestampStr);
    DateTime dt = new     DateTime(1970,1,1,0,0,0).AddMilliseconds(timestamp);
    Console.WriteLine(dt);
    Console.WriteLine(dt.ToLocalTime());

  是的,只需要调用 ToLocalTime() 方法,结果如下:

  

  就是这么简单,仅仅是个时区的问题

 

以上是关于将 javascript 中的 timestamp(时间戳) 转 c# 的 datetime类型的主要内容,如果未能解决你的问题,请参考以下文章

将默认时间戳添加到雪花中的表

数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam

MySQL 关于 Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestam

将 pandas TimeStamp 与 scikit-learn 一起使用

Paypal 响应中的 Receipt_id 为空,我该如何获取?

java 中的Date和Timestamp的区别