【自用轮子】--C#时间戳的使用

本文介绍了如何在生成时间戳时考虑时区偏移,包括使用DateTimeOffset获取国际时间和本地时间戳,以及如何在需要时进行时间偏移转换。推荐在大量时间记录场景中应用这些技巧。
摘要由CSDN通过智能技术生成

造好的轮子

不在生成时间戳时进行时区偏移:

//生成时间戳字符串,等同于 DateTimeOffset.UtcNow.ToUnixTimeSeconds()
var date= DateTimeOffset.Now.ToUnixTimeSeconds().ToString();
//记录本地时区偏移
var offset=DateTimeOffset.Now.Offset;
//时间戳转DateTime并增加时区偏移获取对应本地时间
var dateTime= DateTimeOffset.FromUnixTimeSeconds(long.Parse(date)).DateTime.AddHours(offset.Hours);

直接在生成时间戳时进行时区偏移:

//生成当前本地时间戳字符串
var date= DateTimeOffset.Now.AddHours(DateTimeOffset.Now.Offset.Hours).ToUnixTimeSeconds().ToString();

//时间戳字符串转DateTime
var dateTime= DateTimeOffset.FromUnixTimeSeconds(long.Parse(date)).DateTime;

使用场景建议

有大量需要进行当前时间记录的场景;

设计思路:

生成时间戳字符串
通过DateTimeOffset.ToUnixTimeSeconds函数获取自1970-01-01T00:00:00Z (1970 年1 月1 日上午12:00 UTC) 以来所经过的Unix 时间(以秒数表示);得到10位数左右的long值,将其转换为字符串进行通信或保存;
因为生成固定为国际时间的时间戳,所以本地时间需要进行时区偏移;

时间戳转换为DateTime
通过DateTimeOffset.FromUnixTimeSeconds函数进行反向转换获取时间偏移值,并直接获取DateTime属性;若生成时未进行时间偏移,需要获取本地时间则进行时间偏移;

相关零件

DateTime.Now:当前本地时间;
DateTime.UtcNow:当前国际时间;
DateTimeOffset.Now:当前本地时间偏移;
DateTimeOffset.UtcNow当前国际时间偏移;
DateTimeOffset.Now.Offset:当前时间相较于国际时间的偏移(时区)
TimeZoneInfo.ConvertTime(DateTimeOffset, TimeZoneInfo):将时间偏移转换成特定时区时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值