簡體   English   中英

瞬間在Internet Explorer和Safari上返回無效日期

[英]moment returns Invalid Date on Internet Explorer and Safari

我正在嘗試將日歷中獲取的日期轉換為特定格式。 因此,我使用特定的選擇器日期選擇器獲取日歷的值:

var ChkinDate = $('#myCheckinDate').data('datepicker').getDate();
// the value I am getting is: ChkinDate=Mon Apr 24 2017 00:00:00 GMT+0300 (GTB Daylight Time);

現在,我正在嘗試將此日期轉換為特定格式

var CheckinDate = moment(new Date(TimezoneDate(ChkinDate))).format('MM/DD/YYYY');
function TimezoneDate(objDate) {
  if (IsEmpty(objDate)) {
    return moment().format('YYYY-MM-DD 00:00:00');
  }
  else {
    return moment(objDate).format('YYYY-MM-DD 00:00:00');
  }
}

這在使用Chrome瀏覽器和Mozilla Firefox的Windows機器上可以完美地工作,但是當我使用Internet Explorer時,變量CheckinDate “無效日期”。 Mac計算機上也可能出現此問題,但現在我在Safari上顯示“無效日期”,但在Firefox上運行良好。

由於獲取的是JavaScript日期,因此可以使用以下代碼:

function TimezoneDate(objDate) {
  if (IsEmpty(objDate)) {
    return moment();
  }
  else {
    return moment(objDate);
  }
}

var ChkinDate = $('#myCheckinDate').data('datepicker').getDate();
var CheckinDate = TimezoneDate(ChkinDate).format('MM/DD/YYYY');

使用moment(Date)從JavaScript日期獲取一個矩對象,然后可以使用format()以您喜歡的格式(例如format('MM/DD/YYYY')format('YYYY-MM-DD HH:mm:ss') format()獲取矩format('YYYY-MM-DD HH:mm:ss') )。

在我的示例TimezoneDate函數中返回一個矩對象,因此您可以在其上調用format() (指定所需的格式)。


這是一個實時工作示例( ChkinDate IsEmptyChkinDate ):

 // Mocking IsEmpty function function IsEmpty(obj){ if(obj) return false; return true; } function TimezoneDate(objDate) { if (IsEmpty(objDate)) { return moment(); } else { return moment(objDate); } } //var ChkinDate = $('#myCheckinDate').data('datepicker').getDate(); // Mocking datepicker date var ChkinDate = new Date(2017, 5, 10); var CheckinDate = TimezoneDate(ChkinDate).format('MM/DD/YYYY'); console.log(CheckinDate) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM