以下毫秒为单位
之前获取当天零点的代码如下:
public static long GetCurDayZeroTime(long timeStampMS)
{
var timeStampStart = new DateTime(1970, 1, 1, 8, 0, 0);
var now = timeStampStart.AddMilliseconds(timeStampMS);
var nowZero = new DateTime(now.Year, now.Month, now.Day);
TimeSpan ts = nowZero - timeStampStart;
return Convert.ToInt64(ts.TotalMilliseconds);
}
Console.WriteLine(GetCurDayZeroTime(1725254429127));
执行结果: 1725206400000
更新后的获取当天零点的代码:
public static long GetDayZeroTime(long timeStampMS)
{
int dayTime = 86400000;
int hours = 28800000; // 东八区
return (timeStampMS + hours) / dayTime * dayTime - hours;
}
Console.WriteLine(GetDayZeroTime(1725254429127));
执行结果: 1725206400000
更简便的方法:
public static long GetDayZeroTime1(long timeStampMS)
{
int dayTime = 86400000;
int hours = 28800000; // 东八区
return timeStampMS - (timeStampMS + hours) % dayTime;
}
Console.WriteLine(GetDayZeroTime1(1725254429127));
执行结果: 1725206400000