C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳
时间戳
JavaScript时间戳:
是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。
Unix时间戳:
是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
可以看出JavaScript时间戳总毫秒数,Unix时间戳是总秒数。
比如同样是的 2016/11/03 12:30:00 ,转换为JavaScript时间戳为 1478147400000;转换为Unix时间戳为 1478147400。
JavaScript时间戳相互转换
C# DateTime转换为JavaScript时间戳
// 当地时区
System.DateTime startTime =
TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
// 相差毫秒数
long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds;
System.Console.WriteLine(timeStamp);
JavaScript时间戳转换为C# DateTime
long jsTimeStamp = 1478169023479;
// 当地时区
System.DateTime startTime =
TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));
Unix时间戳相互转换
C# DateTime转换为Unix时间戳
// 当地时区
System.DateTime startTime =
TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
// 相差秒数
long timeStamp = (long)(DateTime.Now - startTime).TotalSeconds;
System.Console.WriteLine(timeStamp);
Unix时间戳转换为C# DateTime
long unixTimeStamp = 1478162177;
// 当地时区
System.DateTime startTime =
TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
DateTime dt = startTime.AddSeconds(unixTimeStamp);
System.Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss:ffff"));
日期格式化
符号 | 说明 | 语法 | 示例(2016-05-09 13:09:55:2350) |
yy | 年份后两位 | DateTime.Now.ToString("yy") | 16 |
yyyy | 4位年份 | DateTime.Now.ToString("yyyy") | 2016 |
MM | 两位月份;单数月份前面用0填充 | DateTime.Now.ToString("MM") | 05 |
dd | 日数 | DateTime.Now.ToString("dd") | 09 |
ddd | 周几 | DateTime.Now.ToString("ddd") | 周一 |
dddd | 星期几 | DateTime.Now.ToString("dddd") | 星期一 |
hh | 12小时制的小时数 | DateTime.Now.ToString("hh") | 01 |
HH | 24小时制的小时数 | DateTime.Now.ToString("HH") | 13 |
mm | 分钟数 | DateTime.Now.ToString("mm") | 09 |
ss | 秒数 | DateTime.Now.ToString("ss") | 55 |
ff | 毫秒数前2位 | DateTime.Now.ToString("ff") | 23 |
fff | 毫秒数前3位 | DateTime.Now.ToString("fff") | 235 |
ffff | 毫秒数前4位 | DateTime.Now.ToString("ffff") | 2350 |
分隔符 | 可使用分隔符来分隔年月日时分秒。 包含的值可为:-、/、:等非关键字符 | DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); // => 2016-05-09 13:09:55:2350 DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff"); // => 2016/05/09 13:09:55:2350 DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff dddd"); // => 2016/05/09 13:09:55:2350 星期一 |