如何使用正确的时区将Long类型的datetime转换为DateTime

时间:2011-02-11 01:16:34

标签: 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 dateValue;

此功能的结果是凌晨1点,它是GMT。 我该怎么办?

3 个答案:

答案 0 :(得分:48)

您正在寻找ToLocalTime()方法:

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

答案 1 :(得分:4)

您可以在创建新的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());

答案 2 :(得分:4)

long a= 634792557112051692;
//a= ticks time
  DateTime dt = new DateTime(a);
   Response.Write(dt.Hour.ToString());


//dt.hour convert time ticks to time hour