2010-03-19 34 views
5

Tôi đang làm việc với pbx cho các cuộc gọi voip. Một khía cạnh của pbx là bạn có thể chọn nhận các gói CDR. Những gói này có 2 dấu thời gian: "utc" và "local", nhưng cả hai dường như luôn giống nhau.Chuyển đổi giờ địa phương (10 chữ số) thành định dạng ngày giờ có thể đọc được

Dưới đây là ví dụ về dấu thời gian: "1268927156".

Ngay từ cái nhìn đầu tiên, dường như không có logic trong đó. Vì vậy, tôi đã cố gắng chuyển đổi nó một số cách, nhưng không có kết quả tốt. Giá trị đó sẽ cung cấp một khoảng thời gian khoảng 11 giờ sáng (+ 1GMT) ngày hôm nay.

Những điều tôi đã cố gắng:

  • Datetime dt = new Datetime (số);
  • Thời gian ts = new Timespan (số);
  • DateTime utc = new DateTime (số + 504911232000000000, DateTimeKind.Utc)

và một số người khác tôi không thể nhớ ngay bây giờ.

Tôi có thiếu thứ gì đó ngu ngốc ở đây không?

Cảm ơn trước

+0

những lớp học này có đi kèm với phương pháp ToString hoặc Định dạng không? – lexu

Trả lời

12

Điều này có vẻ như Unix thời gian.

1268927156 = Thu, 18 tháng 3 2010 15:45:56 GMT

Và một mẫu mã: (. Không giây kể từ khi kỷ nguyên)

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

vấn đề đã được khắc phục, tất cả câu trả lời tuyệt vời, cảm ơn – Terry

2

Có vẻ là một dấu thời gian Unix

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

sẽ cho bạn ngày và thời gian bạn đang theo đuổi ...

1

tôi đoán đây là một dấu thời gian UNIX, các lo GIC sẽ là như sau:

Các dấu thời gian UNIX đại diện cho thời gian được đo bằng số giây kể từ khi Unix Epoch (01 tháng 1 năm 1970 00:00:00 GMT)

Có một codeproject article giải thích chuyển đổi. Về cơ bản những gì bạn cần làm là như sau:

// 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); 
1

Trông giống như dấu thời gian unix, là không. số giây kể từ ngày 01 tháng 1 năm 1970.

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

Nếu cả utc và timestamps địa phương là như nhau, các múi giờ trên PBX của bạn hoặc thiết lập để UTC, và timestamps của bạn thực sự là UTC, hoặc múi giờ được đặt thành UTC nhưng thời gian được thiết lập để bạn giờ địa phương và bạn có thời gian địa phương cho cả hai dấu thời gian. Bạn sẽ phải tìm ra cái nào trong số đó để bạn biết thời gian chuyển đổi các dấu thời gian từ UTC hay không.

Các vấn đề liên quan