Khoảnh khắc js có được ngày đầu tiên và ngày cuối cùng của tháng hiện tại


136

Làm cách nào để tôi có được ngày và giờ đầu tiên và cuối cùng của tháng hiện tại theo định dạng sau trong khoảnh khắc.js:

2016-09-01 00:00

Tôi có thể nhận được ngày và giờ hiện tại như thế này: moment().format('YYYY-MM-DD h:m')sẽ xuất ra ở định dạng trên.

Tuy nhiên tôi cần lấy ngày và giờ của ngày đầu tiên và ngày cuối cùng của tháng hiện tại, có cách nào để làm việc này không?

EDIT: Câu hỏi của tôi khác với câu hỏi này bởi vì nó yêu cầu một tháng nhất định mà người dùng đã có trong khi tôi yêu cầu tháng hiện tại cùng với yêu cầu một định dạng cụ thể của ngày không được đề cập trong cái khác được gọi là 'trùng lặp '.



1
Moment.js hỗ trợ chức năng để có được ngày đầu tiên và ngày cuối cùng của tháng, bạn có thể nhận được điều đó cho tháng hiện tại bằng cách: khoảnh khắc (). StartOf ('tháng') và khoảnh khắc (). EndOf ('tháng'). Tôi nghĩ bạn nên xem câu trả lời từ đây
Tân Lê

@TanLe Có nhưng điều này xuất ra ở định dạng sau: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Tôi muốn định dạng như tôi đã đề cập trong câu hỏi của mình
user3574492

Hàm đó trả về đối tượng thời điểm trong ngày, vì vậy bạn có thể sử dụng định dạng để xuất với bất kỳ định dạng nào bạn muốn. Giống như: khoảnh khắc (). StartOf ('tháng'). Định dạng ('YYYY-MM-DD HH: mm').
Tân Lê

@AuditeMarlow Hãy thử nhưng những câu hỏi hơi khác nhau như được giải thích trong phần chỉnh sửa của tôi.
dùng3574492

Câu trả lời:


370

Trong trường hợp bất kỳ ai bỏ lỡ các nhận xét về câu hỏi ban đầu, bạn có thể sử dụng các phương thức tích hợp (hoạt động kể từ thời điểm 1.7):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');

1
Không biết tại sao ai đó xóa các nhận xét ban đầu nhưng lý do đây không phải là câu trả lời được chấp nhận là vì nó đã được đăng nhiều tháng sau câu trả lời được chấp nhận.
dùng3574492

2
cảm ơn @ user3574492 không phải là vấn đề lớn, cảm ơn vì đã làm rõ - nếu bạn nghĩ câu trả lời này là câu trả lời hay nhất thì tôi nghĩ có thể thay đổi nó thành câu trả lời được chấp nhận, ngay cả khi nó được đăng sau đó.
Ali Yazdani

3
moment(1, "DD");sẽ trở lại vào ngày đầu tiên của tháng hiện tại
Anil Vangari

35

Sẽ có một cách khác để làm điều này:

var begin = moment().format("YYYY-MM-01");
var end = moment().format("YYYY-MM-") + moment().daysInMonth();

27

Bạn có thể làm điều này mà không cần khoảnh khắc

Một cách để làm điều này trong mã Javascript gốc:

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

firstDay = moment(firstDay).format(yourFormat);
lastDay = moment(lastDay).format(yourFormat);

Điều này xuất ra ở định dạng ngày mặc định Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)không phải ở định dạng tôi muốn:2016-09-01 00:00
user3574492

1
Sử dụng khoảnh khắc để định dạng ngày ... firstDay = khoảnh khắc (FirstDay) .format ('MM / DD / YYYY'); lastDay = khoảnh khắc (lastDay) .format ('MM / DD / YYYY');
Kevin Grosgojat

1
và làm thế nào để có được startdateenddatecủa tháng tiếp theo bằng cách sử dụng công thức này?
alka vaghela

28
"Bạn có thể làm điều này mà không cần khoảnh khắc.js" sử dụng khoảnh khắc.js để định dạng ngày ...
SteamFire

10

Giả sử bạn đang sử dụng Bộ chọn phạm vi ngày để lấy ngày. Bạn có thể làm một cái gì đó như để có được những gì bạn muốn.

$('#daterange-btn').daterangepicker({
            ranges: {
                'Today': [moment(), moment()],
                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                'This Month': [moment().startOf('month'), moment().endOf('month')],
                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
            },
            startDate: moment().subtract(29, 'days'),
            endDate: moment()
        }, function (start, end) {
      alert( 'Date is between' + start.format('YYYY-MM-DD h:m') + 'and' + end.format('YYYY-MM-DD h:m')}

9

khoảnh khắc startOf ()endOf () là câu trả lời bạn đang tìm kiếm .. Ví dụ: -

moment().startOf('year');    // set to January 1st, 12:00 am this year
moment().startOf('month');   // set to the first of this month, 12:00 am
moment().startOf('week');    // set to the first day of this week, 12:00 am
moment().startOf('day');     // set to 12:00 am today

1

Ngày đầu tiên và ngày cuối cùng của tháng hiện tại Trong thời điểm.js

console.log("current month first date");
    const firstdate = moment().startOf('month').format('DD-MM-YYYY');
console.log(firstdate);

console.log("current month last date");
    const lastdate=moment().endOf('month').format("DD-MM-YYYY"); 
console.log(lastdate); 

1

Để đơn giản, chúng ta có thể sử dụng daysInMonth ()endOf ()

const firstDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').startOf('month').format('D')
const lastDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').endOf('month').format('D')
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.