Phân tích chuỗi đến ngày với khoảnh khắc


Câu trả lời:


205

Bạn cần sử dụng .format()chức năng.

MM - Số tháng

MMM - Tháng từ

var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY');
var dateMonthAsWord = moment("2014-02-27T10:00:00").format('DD-MMM-YYYY');

VĨ CẦM


Những gì về các biến ngày hiện tại. var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Cung cấp một lỗi ngày không hợp lệ ?????
Ngày Andrew

3
thử '' var dateCalWikiPart = khoảnh khắc (ngày, 'YYYY / MM / DD'); cảnh báo (ngày); ''
ranjan

@AndrewDay ... "01-02-2017", "2 tháng 1" hay "1 tháng 2"? Khoảnh khắc không thể đọc được suy nghĩ của bạn.

3
Câu trả lời này chỉ hoạt động vì chuỗi của OP có định dạng Ngày chuẩn. Câu trả lời của Stephen Paul cho thấy cách chuyển đổi bất kỳ chuỗi nào, được đưa ra một định dạng cụ thể, thành một ngày có thể được thao tác.
Agamemnus

362

Tôi dường như luôn thấy mình hạ cánh ở đây chỉ để nhận ra rằng tiêu đề và câu hỏi không hoàn toàn phù hợp.

Nếu bạn muốn một ngày thời điểm từ một chuỗi :

const myMoment = moment(str, 'YYYY-MM-DD')

Từ tài liệu thời điểm :

Thay vì sửa đổi Date.prototype gốc, Moment.js tạo một trình bao bọc cho đối tượng Date.

Thay vào đó, nếu bạn muốn một đối tượng Ngày javascript từ một chuỗi :

const myDate = moment(str, 'YYYY-MM-DD').toDate();

16
Đúng, chỉ có một câu trả lời này. Phân tích chuỗi cho đến ngày (có nghĩa là đầu vào là str, hết là ngày)
deathangel908

@ deathangel908 Lol, không cần làm rõ, câu hỏi hoàn toàn rõ ràng.

20

Không cần khoảnh khắc để phân tích cú pháp đầu vào vì định dạng của nó là tiêu chuẩn:

var date = new Date('2014-02-27T10:00:00');
var formatted = moment(date).format('D MMMM YYYY');

http://es5.github.io/#x15.9.1.15


1
Đó là sự thật, không cần khoảnh khắc.js nếu bạn có chuỗi ngày ISO ... Bạn cũng có thể sử dụng Date.parse để rõ ràng hơn rằng bạn đang làm việc với các chuỗi ISO (vì nhà xây dựng có thể có các định dạng khác)
Juan Mendes

3
Không hoạt động trong IE8 ... Thật bất ngờ ... Cung cấp NaN.

@JuanMendes, liên kết của bạn nói rằng Date.parsecác cuộc gọi đó new Date, vì vậy nó sẽ không tạo ra sự khác biệt.
sk904861

6

Khoảnh khắc thật hoàn hảo cho những gì tôi cần. LƯU Ý nó bỏ qua giờ và phút và chỉ làm điều đó nếu bạn để nó. Điều này là hoàn hảo đối với tôi vì cuộc gọi API của tôi mang lại ngày và giờ nhưng tôi chỉ quan tâm đến ngày.

function momentTest() {

  var varDate = "2018-01-19 18:05:01.423";
  var myDate =  moment(varDate,"YYYY-MM-DD").format("DD-MM-YYYY");
  var todayDate = moment().format("DD-MM-YYYY");  
  var yesterdayDate = moment().subtract(1, 'days').format("DD-MM-YYYY");   
  var tomorrowDate = moment().add(1, 'days').format("DD-MM-YYYY");

  alert(todayDate);

  if (myDate == todayDate) {
    alert("date is today");
  } else if (myDate == yesterdayDate) {
    alert("date is yesterday");
  } else if (myDate == tomorrowDate) {
    alert("date is tomorrow");
  } else {
    alert("It's not today, tomorrow or yesterday!");
  }
}


0
  • Cách thay đổi bất kỳ ngày chuỗi nào thành ngày đối tượng (cũng với khoảnh khắc.js):

let startDate = "2019-01-16T20:00:00.000"; let endDate = "2019-02-11T20:00:00.000"; let sDate = new Date(startDate); let eDate = new Date(endDate);

  • với khoảnh khắc.js:

startDate = moment(sDate); endDate = moment(eDate);

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.