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

如何基于当前秒级时间戳获取对应日期起始时间的秒级时间戳

秒级时间戳取当日起始实现方案

实现代码

UTC时区计算(无歧义低,推荐跨地区业务优先选择)

private long? getStartOfDay(long? dateVal)
{
    if (!dateVal.HasValue)
        return null;

    DateTimeOffset dateTime = DateTimeOffset.FromUnixTimeSeconds(dateVal.Value);
    DateTimeOffset startOfDay = new DateTimeOffset(dateTime.UtcDateTime.Date, TimeSpan.Zero);
    
    return startOfDay.ToUnixTimeSeconds();
}

本地时区计算(适配当地时区场景

private long? getStartOfDay(long? dateVal)
{
    if (!dateVal.HasValue)
        return null;

    DateTimeOffset dateTime = DateTimeOffset.FromUnixTimeSeconds(dateVal.Value);
    DateTime localDate = dateTime.LocalDateTime.Date;
    DateTimeOffset startOfDay = new DateTimeOffset(localDate, TimeZoneInfo.Local.GetUtcOffset(localDate));
    
    return startOfDay.ToUnixTimeSeconds();
}

逻辑说明

  • 空值输入直接返回null,符合可空类型的返回要求
  • 传入参数为0时,返回值自动为0,刚好对应UTC时区1970年1月1日午夜的秒级时间戳,满足要求
  • 如果需要适配指定业务时区,将本地时区实现中的TimeZoneInfo.Local替换为对应时区实例即可

提示:当日起始时间的计算依赖时区规则,选择和业务场景匹配的实现即可

内容的提问来源于stack exchange,提问作者Young programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:39:01