C#中,Ticks不能作为时间戳使用。

时间戳的核心要求

同一时刻,无论时区如何,时间戳值必须唯一且不变。
DateTime.Ticks显然不符合要求。

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属性,但这不能取代时区信息,仅仅是一个附加属性。

posted @ 2026-05-22 16:09  苦荞米  阅读(3)  评论(0)    收藏  举报