2012-04-11 31 views
7

Tôi nhận được một ngày từ phía máy chủ C# sử dụng đoạn mã sau:Javascript DATE và C# date - giải pháp tốt nhất là gì?

DateTime d1 = new DateTime(1970, 1, 1); 
DateTime d2 = (DateTime)c.ccdTimestamp2; 
long x = new TimeSpan(d2.Ticks - d1.Ticks).TotalMilliseconds; 

Khi tôi nhận được mã của tôi ở phía bên javascript:

function (timestamp) { 
    alert("testing :" + new Date(timestamp)) 
} 

này mang lại cho tôi một ngày được định dạng đầy đủ nhưng nó không mang lại thời gian của múi giờ của tôi vì nếu nó là 17,15 ở đây, nó cung cấp cho tôi với 19,15 GMT +2! Lúc đầu, tôi chỉ đơn giản là cố gắng vượt qua dấu thời gian C# của tôi, mà không có bất kỳ mã nào ở trên và tìm thấy câu hỏi này: How do I format a Microsoft JSON date? Nhưng tôi không biết JSON là gì và tôi không thể lấy được những gì tôi có thể làm! Sử dụng JSON có dễ sử dụng hơn không? Nếu có ai đó có thể hướng dẫn tôi không? Cảm ơn bạn rất nhiều


Chỉnh sửa: Giải pháp - Tôi không sử dụng thời gian toàn cầu ở phía máy chủ. Tôi đã để lại mã phía máy chủ. Tất cả tôi đã làm là thế này:

new Date(timestamp).toUTCString() 
+1

Máy chủ và máy khách có nằm trong các múi giờ khác nhau không? –

+0

Không. Tôi chỉ đang kiểm tra mã số – test

Trả lời

10

gì bạn cần làm là:

  • Luôn luôn sử dụng UTC lần trên máy chủ
  • Gửi UTC lần để trình duyệt dưới dạng tem thời gian đơn vị như bạn hiện đang thực hiện
  • Chuyển đổi dấu thời gian thành giờ địa phương trong trình duyệt r

Các dấu thời gian sử dụng đại diện: 2012-04-11T15:46:29+00:00:

var d = new Date (1334159189000); 
// gives you back 2012-04-11T15:46:29+00:00 in a slightly different format, but the timezone info matches UTC/GMT+0 
d.toUTCString(); 
// gives you back your local time 
d.toLocaleString(); 

Chỉ cần tạo ra một jsfiddle để chứng minh rằng nó những gì nó có nghĩa vụ phải:
http://jsfiddle.net/t8hNs/1/

+0

Khi tôi thử với C# ve của tôi nó không hoạt động. Các dấu thời gian là: 635834482125955879 –

3

bạn có thể sử dụng JavaScriptSerializer

string json = new JavaScriptSerializer().Serialize(DateTime.Now); 
+0

Tôi thậm chí không thể tham khảo System.Web.Script ...:/ – test

+0

@test Và tôi không thể thấy một cách để giúp những người 'thậm chí không thể tham chiếu Hệ thống. Web.Script':/ –

+0

Tôi xin lỗi nhưng tôi không thể tìm thấy nó trong các tham chiếu trong tab 'hệ thống'. Hay tôi nên tìm kiếm một số nơi khác? – test

4

sử dụng

var currentDate = new Date(); 
//get off set from your browser 
var offset = Date.getTimezoneOffset();