将本地时间(10位数字)转换为可读的日期时间格式

时间:2010-03-19 13:40:52

标签: c# datetime localtime

我正在使用pbx进行voip调用。 pbx的一个方面是您可以选择接收CDR包。这些包有2个时间戳:“utc”和“local”,但两者似乎总是相同。

以下是时间戳示例:“1268927156”。

乍一看,似乎没有任何逻辑。所以我尝试了几种方式转换它,但没有好结果。该值应该在今天上午11点左右(+ 1GMT)提供时间。

我尝试的事情:

  • Datetime dt = new Datetime(number);
  • Timespan ts = new Timespan(number);
  • DateTime utc = new DateTime(number + 504911232000000000,DateTimeKind.Utc)

以及其他一些我现在都记不住的了。

我在这里错过了一些愚蠢的东西吗?

提前致谢

4 个答案:

答案 0 :(得分:12)

这看起来像Unix时间。

1268927156 =星期四,2010年3月18日15:45:56 GMT

代码示例:

DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
DateTime time = startDate.AddSeconds(1268927156 );

答案 1 :(得分:2)

似乎是一个Unix时间戳(自纪元以来的秒数)

DateTime translated = new DateTime(1970,1,1).AddSeconds(1268927156);

应该给你你的日期和时间......

答案 2 :(得分:1)

我想这是一个UNIX时间戳,逻辑如下:

  

UNIX时间戳表示自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数测量的时间

codeproject article解释转换。基本上你需要做的是:

// First make a System.DateTime equivalent to the UNIX Epoch.
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
// Add the number of seconds in UNIX timestamp to be converted.
dateTime = dateTime.AddSeconds(timestamp);

答案 3 :(得分:1)

这看起来像一个unix时间戳,这是no。自1970年1月1日以来的几秒钟。

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(1268927156);

如果utc和本地时间戳相同,则PBX上的时区设置为UTC,时间戳确实为UTC,或者时区设置为UTC但时间设置为当地时间,并且你得到两个时间戳的当地时间。你必须弄清楚哪一个你知道如何转换UTC的时间戳。