C# 如何将长类型datetime转换为具有正确时区的datetime

C# 如何将长类型datetime转换为具有正确时区的datetime,c#,datetime,timezone,C#,Datetime,Timezone,例如1297380023295应该是2010/2/11上午9点 我现在就用这个代码 long dateNumber = num; long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000); return

例如
1297380023295
应该是2010/2/11上午9点 我现在就用这个代码

        long dateNumber = num;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
        DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000);

        return dateValue;
此功能的结果为凌晨1点,即格林尼治标准时间。
我能用它做什么?

您正在寻找
ToLocalTime()
方法:

long unixDate = 1297380023295;
DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime date= start.AddMilliseconds(unixDate).ToLocalTime();

创建新的DateTime对象时,可以指定DateTimeKind,因此可以将其指定为UTC,然后使用.ToLocalTime将其转换为本地时间:

        long dateNumber = 1297380023295;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;

        DateTime dt = new DateTime(beginTicks + dateNumber * 10000, DateTimeKind.Utc);
        MessageBox.Show(dt.ToLocalTime().ToString());

Powershell脚本,仅供参考

$minDate = New-Object "System.DateTime"
$minDate = $minDate.AddYears(1969)
$minDate.AddMilliseconds(1446616420947)

我发现下面的链接@ImranNaqvi更有用:该方法需要.Net标记,不是Unix时间戳。@SLaks+1更正谢谢你说得对,你能告诉我如何使用你的code@ImranNaqvi:您正在查找
.Date
属性。@SLaks-Yes,我发现它使用DateTime myDate=DateTime.FromOADate(Convert.ToDouble(rd[0])工作;字符串mydate2=myDate.ToString(“dd/MM/yyyy”);如何将像
DateTime.Parse(“22:34”)
这样的格式转换为
long
$minDate = New-Object "System.DateTime"
$minDate = $minDate.AddYears(1969)
$minDate.AddMilliseconds(1446616420947)