时刻返回Internet Explorer和Safari上的无效日期
问题描述:
我想将日历从日历转换为特定格式。时刻返回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上运行良好。
答
既然你得到一个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()
(指定您需要的格式)。
这里现场工作示例(嘲讽IsEmpty
和ChkinDate
):
// 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>
喂我歌厅 “对象不支持属性或方法 '格式化'” – focus
@重点编辑我的答案添加一个工作片段。你确定你使用相同的代码吗? – VincenzoC