转换为纪元时间戳,添加小时偏移量

本文关键字:添加 小时 偏移量 时间戳 纪元 转换 | 更新日期: 2023-09-27 18:31:26

我在字符串中将日期时间设置为"20160127003500"。我需要做的是将其转换为Unix时间戳,为其添加小时数。

我想将小时偏移量添加为"1"或"2"或"24"。

谁能引导我走向正确的方向。

问候

转换为纪元时间戳,添加小时偏移量

首先,将整个字符串(包括您在问题注释中提到的偏移量)解析为DateTimeOffset

using System.Globalization;
string s = "20160129205500 +0100";
string format = "yyyyMMddHHmmss zzz";
DateTimeOffset dto = DateTimeOffset.ParseExact(s, format, CultureInfo.InvariantCulture);

然后,有几种不同的方法可以获取 Unix 时间戳。 请注意,根据"Unix时间戳"的纯定义,结果将以为单位,尽管现在许多语言使用更高的精度(例如JavaScript中使用的毫秒)。

如果面向 .NET 4.6 或更高版本,只需使用内置方法:

// pick one for the desired precision:
long timestamp = dto.ToUnixTimeMilliseconds();
long timestamp = dto.ToUnixTimeSeconds();

如果面向早期版本的 .NET,请自行计算:

DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
// pick one for the desired precision:
long timestamp = (long) dto.UtcDateTime.Subtract(epoch).TotalMilliseconds;
long timestamp = (long) dto.UtcDateTime.Subtract(epoch).TotalSeconds;