javascript - Cách chuyển đổi dấu thời gian unix sang ngày tháng trên lịch bằng moment.js
Tôi có một dấu thời gian Unix, và tôi đang cố gắng chuyển nó thành một ngày trong lịch như MM/DD/YYYY. Cho đến nay, tôi có điều này:
$(document).ready(function() {
var value = $("#unixtime").val(); //this retrieves the unix timestamp
var dateString = moment(value).calendar();
alert(dateString);
});
Khi tôi cố in ngày trên lịch, cửa sổ hiển thị 'Ngày không hợp lệ'. Có ai có thể giúp tôi không?
Câu trả lời #1
Sử dụng moment.js như bạn yêu cầu, có một phương thức unix nhận các dấu thời gian unix theo giây:
var dateString = moment.unix(value).format("MM/DD/YYYY");
Câu trả lời #2
Dấu thời gian UNIX là số giây kể từ năm 1970, vì vậy bạn cần chuyển nó thành đối tượng Date của JS:
var date = new Date(unixTimestamp*1000);
Câu trả lời #3
Moment.js cung cấp các định dạng theo địa phương có thể được sử dụng.
Đây là một ví dụ:
const moment = require('moment');
const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');
console.log(formatted); // "02/24/2018"
Câu trả lời #4
Có thể hơi muộn nhưng đối với những vấn đề mới như thế này tôi sử dụng mã này:
moment(timestamp, 'X').format('lll');
Bạn có thể thay đổi định dạng để phù hợp với nhu cầu của mình và cũng thêm múi giờ như sau:
moment(timestamp, 'X').tz(timezone).format('lll');
Tham khảo: https://momentjs.com/docs/#/parsing/string/
Cảnh báo: Hỗ trợ của trình duyệt cho việc phân tích chuỗi là không nhất quán. Bởi vì không có thông số kỹ thuật nào về những định dạng nào nên được hỗ trợ, những gì hoạt động trong một số trình duyệt sẽ không hoạt động trong các trình duyệt khác.
Để có kết quả nhất quán khi phân tích cú pháp bất kỳ thứ gì khác ngoài chuỗi ISO 8601, bạn nên sử dụng String + Format.
ví dụ
moment('2022-12-03').format('YYYY-MM-DD'); //avoid use this because inconsistentcy
moment('2022-12-03','YYYY-MM-DD').format('YYYY-MM-DD'); //use this instead
moment('1670000400','X').format('YYYY-MM-DD'); //use this instead (timestamp)
moment('03-2022-12','DD-YYYY-MM').format('YYYY-MM-DD'); //UNCOMMON CASE
Câu trả lời #5
Chỉ nó
moment.unix(date).toDate();
