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');
第一次警報 -
第二個警告 -
感謝@VicenzoC,當頁面第一次加載數據時從db中拉出來,因此只有當它從日曆中選擇它時,它纔會像'DD/MM/YYYY'一樣返回日期對象。我最喜歡try/catch語句嗎? –
@VicenzoC - 更新我的問題,因爲我認爲我沒有正確解釋它。 –
@ClareBarrington也許你可以使用['typeof'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)運算符來確定你的輸入變量類型,然後調用它的時刻適當的解析功能。 – VincenzoC