时间戳的核心要求
同一时刻,无论时区如何,时间戳值必须唯一且不变。
但DateTime.Ticks显然不符合要求。
csharp
DateTime now = DateTime.Now; // 当前时间 DateTimeKind为Local
long ticks1 = now.Ticks; // 639131645006955279
DateTime utcVersion = now.ToUniversalTime(); // 转UTC时间 DateTimeKind为UTC
long ticks2 = utcVersion.Ticks; // 639131357006955279 ❌ 转换时区后 Ticks发生了变化
虽然DateTime附带了DateTimeKind属性,但这不能取代时区信息,仅仅是一个附加属性。