2016-09-01 38 views
24

Làm thế nào để tôi có được ngày đầu tiên và cuối cùng và thời gian của tháng hiện tại trong các định dạng sau trong moment.js:Moment js có được ngày đầu tiên và cuối cùng của tháng hiện tại

2016-09-01 00: 00

Tôi có thể nhận ngày giờ hiện tại như sau: moment().format('YYYY-MM-DD h:m') sẽ xuất ở đị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, bất kỳ cách nào để thực hiện việc này?

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

+2

Có thể trùng lặp [Moment JS bắt đầu và kết thúc của tháng cụ thể] (http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-month) –

+0

Moment.js hỗ trợ chức năng nhận ngày đầu tiên và 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ởi: moment(). startOf ('month') và moment(). endOf ('month'). Tôi nghĩ bạn nên xem câu trả lời từ [this] (http://stackoverflow.com/questions/26131003/moment-js-start-and-end-of-given-month) –

+0

@TanLe Có nhưng kết quả đầu ra này trong định dạng sau: 'Thu Sep 01 2016 00:00:00 GMT + 0100 (GMT Giờ mùa hè)' Tôi muốn định dạng như tôi đã đề cập trong câu hỏi của mình – user3574492

Trả lời

18

Bạn có thể làm điều này mà không moment.js

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

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); 
+0

Kết quả đầu ra này ở định dạng ngày mặc định 'Thu Sep 01 2016 00:00:00 GMT + 0100 (GMT Giờ mùa hè)' không ở định dạng tôi muốn: '2016-09-01 00: 00' – user3574492

+0

Sử dụng thời điểm để định dạng ngày ... firstDay = moment (firstDay) .format ('MM/DD/YYYY'); lastDay = moment (lastDay) .format ('MM/DD/YYYY'); –

+0

Vì vậy, tôi đã cần phải sử dụng moment.js cuối cùng: p này đã làm các trick nhờ – user3574492

4

Giả sử bạn đang sử dụng một Picker Phạm vi ngày để lấy ngày. Bạn có thể làm một cái gì đó giống 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')} 
+3

Đây chỉ là quá mức cần thiết – user3574492

12

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(); 
58

Trong trường hợp bất cứ ai bỏ lỡ các ý kiến ​​về vấn đề ban đầu, bạn có thể sử dụng được xây dựng trong các phương pháp (chỉ hoạt động như của Moment 1.7):

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

Đây phải là câu trả lời được chấp nhận – sarink

+0

@sarink Câu trả lời này đã được đăng 7 tháng sau khi câu hỏi này được đăng. Vì vậy, yeah đó là lý do tại sao nó không phải là câu trả lời được chấp nhận, – user3574492

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