2017-04-12 80 views
0

我想将日历从日历转换为特定格式。时刻返回Internet Explorer和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'); 
    } 
} 

这是在Windows机器上完美的工作: 所以我使用的是特定的选择日期选取器获得日历的价值使用Chrome浏览器和Mozilla Firefox,但是当我使用Internet Explorer时,我在变量CheckinDate中收到“无效日期”。该问题也发生在Mac机器上,但现在我在Safari上获得“无效日期”,但在Firefox上运行良好。

回答

1

既然你得到一个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'))。

在我的示例TimezoneDate函数返回一个时刻对象,因此您可以调用format()(指定您需要的格式)。


这里现场工作示例(嘲讽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>

+0

喂我歌厅 “对象不支持属性或方法 '格式化'” – focus

+0

@重点编辑我的答案添加一个工作片段。你确定你使用相同的代码吗? – VincenzoC

相关问题