2013-01-12 44 views
5

Tôi đang kết nối với một API và một trong những thông số là dài (13 chữ số) để giữ hiện tại timestamp trong VB.Net đại diện mili giây trôi qua từ 0:00:00 01.01.1970 in GMT cho đến khi thời điểm hiện tại.Làm thế nào để có được dấu thời gian hiện tại

Định dạng nên như thế này 1290932238757

tôi đã cố gắng Syntex này:

DirectCast((Datetime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds, Int64) 

Nhưng đầu ra là:

01/12/2013 02:06:24 

Trả lời

10

Nếu tôi hiểu đúng, làm việc này?

Dim milliseconds = CLng(DateTime.UtcNow.Subtract(New DateTime(1970, 1, 1)) 
                 .TotalMilliseconds) 

Tôi đã sử dụng DateTime.UtcNow trong ví dụ này, nhưng bạn có thể sử dụng DateTime.Now tùy thuộc vào cách bạn có kế hoạch sử dụng dữ liệu. Xem this thread để biết thêm thông tin về sự khác biệt.

+1

nó hoạt động rất tốt, cảm ơn bạn rất nhiều. – Dan

+0

Tôi không thể hiểu nó hoạt động như thế nào: Tôi nghĩ nó nên là CLng (DateTime.UtcNow.Subtract (New DateTime (1970, 1, 1)). ToUniversalTime.TotalMilliseconds). Dù sao, phương pháp này không trả lại dấu thời gian chính xác. Với cuộc gọi @keyboardP, nó trả về dấu thời gian chính xác, nhưng làm thế nào là nó có thể vì nó so sánh UtcNow và 1/1/1970 (đó là nhận biết múi giờ)? – Desmond

+0

Cuối cùng tôi đã hiểu. 'New Date (1,1,1970)' tạo một ngày không biết múi giờ. Phương thức .ToUniversalTime thay đổi nó như trong localTime. Cách tiếp cận tốt nhất nên là tạo ra ngày nhận biết múi giờ: 'DateTime mới (1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)' – Desmond

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