C# 时间戳(Timestamp)与标准时间(DateTime)互转-C/S开发框架

C# 时间戳与 标准时间的转其实不难,但需要注意下,基准时间的问题。
格林威治时间起点:1970 年 1 月 1 日的 00:00:00.000
北京时间起点:1970 年 1 月 1 日的 08:00:00.000
昨天我在这里踩坑了,我用的是格林威治时间计算的时间戳,给计算机监控系统。计算机监控系统拿到时间戳换算后的时间总是跟我的对不上。后来发现是这个原因;
1.标准时间转时间戳的方法
/// <summary>
/// 获取开停机的时间戳
/// </summary>
/// <param name="dtime"></param>
/// <returns></returns>
public int getTimeSpan(DateTime dtime)
{
//格林威治时间
//var timeSpan_Greenwich = dtime - new DateTime(1970, 1, 1, 0, 0, 0);
//标准北京时间
var timeSpan = dtime - new DateTime(1970, 1, 1, 8, 0, 0);
//或者这样写北京标准时间
var timeSpan_beijing = dtime - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0));
return (int)timeSpan.TotalSeconds;
}
2.时间戳转为标准时间
/// <summary>
/// 时间戳Timestamp转换成日期
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
private DateTime GetDateTime(int timeStamp)
{
SaveCommand("timeStamp:" + timeStamp);
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = ((long)timeStamp * 10000000);
TimeSpan toNow = new TimeSpan(lTime);
DateTime targetDt = dtStart.Add(toNow);
if (string.IsNullOrEmpty(targetDt.ToString()))
{
targetDt = DateTime.Now;
}
SaveCommand("time:" + targetDt.ToString());
return targetDt;
}
3.TimeZone.CurrentTimeZone.ToLocalTime()方法
这个方法将一个 DateTime 对象,获取其值为对应于 time 的本地时间。可以看到这个方法格林威治的时间 1970-01-01 00:00:00 转为了北京时间1970-01-01 08:00:00


CSCODE.NETC/S开发框架-C/S框架网专注.NET技术、C/S架构快速开发框架软件
参考文档:
EF提交数据:DbUpdateException:不能更新时间戳列。(Timestamp类型)|C/S开发框架
CS开发框架之自增字段(Identity),时间戳(Timestamp)字段处理|C/S框架网
C# Datetime转Utc时间戳Timestamp
C#日期类型转换工具(时间戳,字符串,long,byte类型互转)
VS2022+.NET6:MySql时间戳(timestamp)类型对应EF Core类型注意事项
MySql 时间戳Timestamp字段类型的字段作为主键模拟用户并发操作
C#.NET DateTime时间格式转换为Unix时间戳格式(int类型)
MySqlBulkLoader 导入csv Incorrect datetime value: '' for column |C/S开发框架
C# DataSet与XML互转|C/S开发框架
C# DataTable与XML互转|C/S开发框架
EF报错:从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值|C/S开发框架
C#DataTable(转List /JSON/字典 互转)-C/S开发框架
MsSQL数据库字段类型timeStamp应对应.net类型DateTime
WebApi开发框架增加Timestamp参数提升系统安全级别
CSFramework.DB 功能介绍|C/S开发框架
Winform开发框架集成微信、支付宝在线支付功能|C/S开发框架
EF提交数据:DbUpdateException:不能更新时间戳列。(Timestamp类型)|C/S开发框架
CS开发框架之自增字段(Identity),时间戳(Timestamp)字段处理|C/S框架网
C# Datetime转Utc时间戳Timestamp
C#日期类型转换工具(时间戳,字符串,long,byte类型互转)
VS2022+.NET6:MySql时间戳(timestamp)类型对应EF Core类型注意事项
MySql 时间戳Timestamp字段类型的字段作为主键模拟用户并发操作
C#.NET DateTime时间格式转换为Unix时间戳格式(int类型)
MySqlBulkLoader 导入csv Incorrect datetime value: '' for column |C/S开发框架
C# DataSet与XML互转|C/S开发框架
C# DataTable与XML互转|C/S开发框架
EF报错:从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值|C/S开发框架
C#DataTable(转List /JSON/字典 互转)-C/S开发框架
MsSQL数据库字段类型timeStamp应对应.net类型DateTime
WebApi开发框架增加Timestamp参数提升系统安全级别
CSFramework.DB 功能介绍|C/S开发框架
Winform开发框架集成微信、支付宝在线支付功能|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
