当我将日期时间转换为时间戳时,它会转换为 GMT。我想要我所在时区的时间戳,比格林威治标准时间早三个小时。
代码:
public static long ToTimestamp(this DateTime value)
{
var timestamp = (long)value.ToUniversalTime()
.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)) // tried DateTimeKind.Local
.TotalMilliseconds;
return timestamp;
}
var MyDateTime = DateTimeHere; //This holds '4/21/2023 04:58:46 pm'.This is my timezone.
var timeStamp = DateTimeHere.ToTimestamp();// this holds '1682085526080'
我现在转换时间戳时想要原始日期时间(不是格林威治标准时间)。我可以知道如何实现这一目标吗?谢谢。
编辑:
我按照建议尝试了。但是当我从时间戳转换时,我仍然比输入时间晚三个小时。
Input time: 04:58:46
Current output when converted from timestamp: 01:58:46
Expected output when converted from timestamp: 04:58:46
按照建议尝试:
1) var timestamp = (long)value.ToLocalTime()
.Subtract(new DateTime(1970, 1, 1, 0, 0, 0))
.TotalMilliseconds;
return timestamp;
2) var timestamp = new DateTimeOffset(value).ToUnixTimeMilliseconds();
return timestamp;