You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ASP MVC项目中整数与时间格式转换问题咨询

问题解析与解决方案

一、格式说明

你给出的整数是秒级Unix时间戳,它的定义是从1970年1月1日00:00:00 UTC(协调世界时)到目标时间点所经过的总秒数。你看到的对应时间是该时间戳转换为具体DateTime后的时分秒部分(日期被省略了),验证如下:

  • 287779394秒 → 转换为DateTime是1979-01-18 17:39:42 UTC,时分秒为17:39:42
  • 238172446秒 → 转换为DateTime是1977-07-14 14:50:57 UTC,时分秒为14:50:57
  • 152830465秒 → 转换为DateTime是1974-10-09 09:28:02 UTC,时分秒为09:28:02

二、C#中将时间转换为对应整数(秒级Unix时间戳)的实现

在ASP.NET MVC项目中,可根据需求选择以下场景的实现:

1. 将本地时间转换为秒级Unix时间戳

public static long ConvertToUnixTimestamp(DateTime localTime)
{
    DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    DateTime utcTime = localTime.ToUniversalTime();
    TimeSpan timeSpan = utcTime - unixStart;
    return (long)timeSpan.TotalSeconds;
}

2. 将UTC时间直接转换为秒级Unix时间戳

如果输入时间已是UTC时间,可跳过时区转换:

public static long ConvertUtcToUnixTimestamp(DateTime utcTime)
{
    DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    TimeSpan timeSpan = utcTime - unixStart;
    return (long)timeSpan.TotalSeconds;
}

3. 仅根据时分秒生成对应Unix时间戳(需指定日期)

如果只有时分秒信息,需先绑定对应日期再转换:

// 示例:生成1979-01-18 17:39:42对应的Unix时间戳
DateTime targetTime = new DateTime(1979, 1, 18, 17, 39, 42, DateTimeKind.Local);
long unixTimestamp = ConvertToUnixTimestamp(targetTime);
// 输出结果为287779394

注意事项

  • Unix时间戳默认以UTC为基准,转换时需注意本地时间与UTC的时差,避免误差
  • 若需毫秒级Unix时间戳,将代码中的TotalSeconds替换为TotalMilliseconds即可

内容的提问来源于stack exchange,提问作者Dursun ICCAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:12:04