2016-03-24 36 views
0
import moment from 'moment'; 

export class DateTimeFormat { 
    format(date, time) { 
     alert(date); 

     return moment(date + 'T' + time, 'DD/MM/YYYY HH:mm:ss'); 
    } 
} 

「日期」可以來通過作爲一個字符串「DD/MM/YYYY」(從DB上負載),或一個日期對象從壓延機(this.value = $('.input-group.date', this.element).datepicker('getUTCDate');)日期選擇器在自定義元素中使用。moment.js不能兩個字符串轉換爲一個

DateTimeFormat這樣使用:

  .ensure('baseContent.ValidFromDate', (config) => { config.computedFrom(['baseContent.ValidFromDate', 'baseContent.ValidFromTime', 'baseContent.ValidToDate', 'baseContent.ValidToTime']) }) 
       .if(() => { 
        return this.baseContent.ValidFromDate !== null && this.baseContent.ValidFromTime !== null && this.baseContent.ValidToDate !== null && this.baseContent.ValidToTime !== null }) 
        .passes(() => { return this.datetimeformat.format(this.baseContent.ValidFromDate, this.baseContent.ValidFromTime) < this.datetimeformat.format(this.baseContent.ValidToDate, this.baseContent.ValidToTime) }) 
        .withMessage('< Valid To') 
       .endIf() 

我曾嘗試: 時刻(日期) - 失敗無效的日期 moment.utc(日期) - 失敗無效日期

我不知道我是否需要添加一個try catch? I.e嘗試並從日期對象轉換,如果它落在catch中,那麼它必須是來自db等的字符串?

從@VicenzoC使用下面的信息我已經添加的if語句

var dateFormatted; 

if (typeof(date) === 'string') 
{ 
    dateFormatted = date; 
} 
else 
{ 
    // Must be an object from a calendar etc 
    alert(date); 
    dateFormatted = moment(date, 'DD/MM/YYYY'); 
    alert(dateFormatted); 
} 

return moment(date + 'T' + time, 'DD/MM/YYYY HH:mm:ss'); 

第一次警報 -

enter image description here

第二個警告 -

enter image description here

回答

1

似乎對我來說那個y我們.datepicker('getUTCDate')返回Date對象,在這種情況下,你可以使用moment(Date);

this.value = $('.input-group.date', this.element).datepicker('getUTCDate'); 
var momentObj = moment(this.value); 

解析成moment對象。如果你有,你可以對其進行解析字符串使用:

一旦你有一個moment對象,如果你需要以自定義格式顯示你的日期,你可以使用format方法。

+0

感謝@VicenzoC,當頁面第一次加載數據時從db中拉出來,因此只有當它從日曆中選擇它時,它纔會像'DD/MM/YYYY'一樣返回日期對象。我最喜歡try/catch語句嗎? –

+0

@VicenzoC - 更新我的問題,因爲我認爲我沒有正確解釋它。 –

+0

@ClareBarrington也許你可以使用['typeof'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)運算符來確定你的輸入變量類型,然後調用它的時刻適當的解析功能。 – VincenzoC

0
import moment from 'moment'; 

export class DateTimeFormat { 
    format(date, time) { 

     var dateFormatted; 

     if (typeof(date) === 'string') 
     { 
      dateFormatted = date; 
     } 
     else 
     { 
      // Must be an object from a calendar etc 
      dateFormatted = moment(date).format('DD/MM/YYYY'); 
     } 

     return moment(dateFormatted + 'T' + time, 'DD/MM/YYYY HH:mm:ss'); 
    } 
} 

這是最後的代碼,我第一次(再次感謝@VicenzoC爲指向我在那個方向)確定的typeof然後我處理if語句中的日期部分。

相關問題