当地时区的时间戳

问题描述 投票:0回答:0

当我将日期时间转换为时间戳时,它会转换为 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;



                          
c# datetime timestamp localtime
© www.soinside.com 2019 - 2024. All rights reserved.