2015-07-13 16 views
5

Với trường văn bản, tôi muốn có một trình giữ chỗ phù hợp. Một trình giữ chỗ điển hình sẽ có dạng như sau: "mm/dd/yyyy".Sử dụng moment.js, cách hiển thị định dạng ngày hiện tại cho người dùng?

Tuy nhiên, tôi muốn sử dụng ngày nhận biết ngôn ngữ sử dụng moment.js.

Điều này có nghĩa là tôi sẽ chỉ định "l" làm định dạng ngày moment.js, làm cách nào để xác định định dạng ngày mà moment.js sẽ sử dụng trong trường hợp này?

Người dùng sẽ không hiểu "l" có nghĩa là gì, do đó, việc sử dụng giá trị này trong văn bản trình giữ chỗ có ý nghĩa rất ít.

Cụ thể, tôi hy vọng có thể truy cập vào nội dung như "defaultLongDateFormat" nội bộ của thời điểm đó. (Mặc dù đó là chỉ đơn thuần là một mặc định - moment.js lẽ cập nhật nó hoặc có một số bản đồ khác trong thời gian chạy cho các định dạng ngày locale-aware - Tôi muốn truy cập vào bản đồ đó.)

EDIT:

Có là nhiều downvotes (những người không giải thích tại sao họ downvoting nó).

Tôi nghĩ rằng đây là bởi vì họ arent' hiểu câu hỏi, vì vậy đây là một số ví dụ:

Tôi muốn có một chức năng như vậy: getFormat ("l") -> "mm/dd/yyyy", hoặc tương đương với ngôn ngữ của Hoa Kỳ. getFormat ("l") -> "dd/mm/yyyy" hoặc tương đương, đối với ngôn ngữ AU.

Tôi làm không muốn định dạng ngày cụ thể hoặc phân tích cú pháp một ngày nhất định - tôi chỉ muốn xác định định dạng thân thiện với người dùng được cung cấp định dạng moment.js tùy ý, cho 'l'.

+1

Để trình gỡ xuống: Tại sao bạn downvote điều này? Đó là một câu hỏi có liên quan. – Arafangion

+0

Câu hỏi của bạn khó hiểu. Bạn có yêu cầu hiển thị định dạng của ngày hiện tại hoặc ngày tháng theo định dạng nhất định không? –

+0

@RobG: Tôi đã được tin rằng moment.js định nghĩa những điều này? Tức là, tôi chỉ định miền địa phương (ví dụ, 'en'), và chuỗi định dạng (ví dụ, 'L'), và sau đó định dạng moment.js nó? – Arafangion

Trả lời

4

Tôi không nghĩ rằng nó tiếp xúc độc đáo, nhưng nếu trình duyệt có ngôn ngữ của nó được cấu hình đúng bạn có thể làm một cái gì đó như thế này:

var lang = navigator.languages ? navigator.languages : navigator.language; 

moment().locale(lang).localeData()._longDateFormat['L'] 

Ngôn ngữ hành xử hơi khác nhau tùy thuộc vào trình duyệt bạn đang sử dụng, vì vậy không biết nó đáng tin cậy như thế nào.

+0

Điều đó hoàn hảo - công trình cho cả en_AU và en_. Tôi sẽ phải hy vọng rằng điều này có thể được gỡ bỏ trong một bản sửa đổi trong tương lai, nhưng điều này có vẻ là tốt nhất có thể được thực hiện. – Arafangion

+0

Bạn đã thử nghiệm chưa? Safari, Firefox và Ominweb tất cả đều sai với tôi. Chrome có cách tiếp cận phân tán súng với 3 phiên bản khác nhau của vi, nhưng một trong số đó là đúng. – RobG

+0

Có và như tôi đã nói bạn phải cài đặt cấu hình ngôn ngữ. –

3

Theo dõi để Adam R của câu trả lời:

Dường như đã được tiếp xúc bởi bây giờ:

localeData.longDateFormat(dateFormat);

trả về định dạng đầy đủ của viết tắt định dạng ngày thời gian LT, L, LL và vân vân

(nguồn: http://momentjs.com/docs/)

Get hiện đang sử dụng dữ liệu locale bởi moment.localeData()

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