2013-07-11 22 views
6

Tự hỏi liệu tôi có nên xóa dữ liệu thời gian được lưu trữ bình thường hay không. Chúng tôi đang sử dụng postgresnode.js nơi một DateTime sẽ được trở về từ API của chúng tôi như:Định dạng ngày JSON (không có thời gian) trở về từ một API

2013-07-01T00:00:00.000Z

Tuy nhiên, kể từ khi lĩnh vực này chỉ nên đại diện cho một ngày, tôi cảm thấy format trước khi trở lại như thế này sẽ làm cho nó rõ ràng hơn rằng thời gian không liên quan:

2013-07-01

Suy nghĩ?

+0

Âm thanh hợp lý với tôi. –

+0

Có vấn đề này quá. Tạo bảng người dùng với cột sinh nhật, loại ngày. Vì vậy, nó chỉ nên có ngày (không có thời gian). Nhận thời gian khi truy vấn với các nút postgres. – Kiddo

Trả lời

3

Là người dùng API, tôi sẽ nhận được hình thức dài hơn của một ngày.

Đối với một vài lý do:

  1. Time Zone:. Định dạng dài thực sự có một múi giờ được xây dựng trong đó quan trọng.
  2. Phân tích cú pháp: hầu hết các ngôn ngữ sẽ có thể đọc định dạng dài đó dưới dạng đối tượng "Ngày" gốc. Trong một số ngôn ngữ như C# & Java, ngày ngắn đó sẽ cần phải được ép buộc vào sử dụng múi giờ chính xác. Bạn cũng tránh nhầm lẫn Ngày/Ngày với định dạng dài.
  3. So sánh: nếu người dùng vượt qua trong một ngày ngắn, API của bạn có xử lý chính xác không? Một API tốt cần phải nhìn giống nhau đi vào và ra.
4

Nếu bạn đại diện cho ngày theo lịch, không có thời gian hoặc múi giờ. Các đại diện ngắn có ý nghĩa hơn.

Thật không may, ngày (chuỗi) mới trong nhiều triển khai javascript có thể làm bad things cho bạn.

new Date('2015-09-23') 
Tue Sep 22 2015 20:00:00 GMT-0400 (Eastern Daylight Time) 

Cách đơn giản nhất là không sử dụng Ngày của javascript - loại này khớp với DateTimeOffset bằng các ngôn ngữ khác. Đó là cách xấu để biểu thị các giá trị ngày của lịch.

Nhưng, có thể bạn sẽ sử dụng ngày của javascript. "Sửa lỗi" đơn giản tiếp theo là tránh các biểu diễn tiêu chuẩn (vì các biểu diễn tiêu chuẩn được diễn giải là DateTimeOffset với UTC). Dưới đây là hai khả năng:

Sử dụng "/" thay vì "-".

new Date('2015/09/23') 
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 

Sử dụng tháng có 3 chữ số - số 0 hàng đầu sẽ bị hủy.

new Date('2015-009-23') 
Wed Sep 23 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 

Nếu bạn có javascript trên cả máy khách và phía máy chủ, bạn đã hoàn tất. Nếu bạn có thứ gì khác ở phía máy chủ, bạn nên xem xét ngôn ngữ máy chủ sẽ làm gì nếu nó thấy định dạng ngày không chuẩn đến.

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