javascript - moment 在 Internet Explorer 和 Safari 上返回无效日期

标签 javascript momentjs

我正在尝试将从日历中获取的日期转换为特定格式。 因此,我使用特定选择器日期选择器获取日历的值:

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 日期获取 moment 对象,然后您可以使用 format()以您喜欢的格式获取时刻(例如 format('MM/DD/YYYY')format('YYYY-MM-DD HH:mm:ss')).

在我的示例中,TimezoneDate 函数返回一个 moment 对象,因此您可以调用 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>

关于javascript - moment 在 Internet Explorer 和 Safari 上返回无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43364893/

相关文章:

javascript - 构造函数中的 DRY JavaScript 继承

javascript - 使用 Moment.js 在 JS 中格式化日期

javascript - 获取上周日期范围从周日到周六时刻js

momentjs - moment.js 获取输入字段占位符的日期格式

javascript - ReCaptcha v2 不会在 vue-router 导航中加载

javascript - 加载 header 后维护持久的事件链接类?

javascript - 在 javascript 中搜索一个字符串并使用 splice 和索引 nr 删除它

javascript - 动态内容被抛出表格之外

javascript - jQuery:将字符串变量传递给日期对象

javascript - X 的时间未按预期工作 moment.js