为什么我使用以下formatDate函数获得相同的日期?

时间:2016-05-12 10:44:59

标签: javascript

我的日期是这样的:

2016-05-12T09:49:01.547Z
2016-05-09T11:18:57.006Z
2016-05-12T09:49:01.547Z

我正在使用此功能:

function formatDate (date) {
  const dateObj = new Date()
  const y = dateObj.getFullYear()
  const m = dateObj.getMonth(date) + 1
  const d = dateObj.getDate(date)
  return y + '/' + m + '/' + d
}

这样:

function buildingTemplate(building){   date:formatDate(building.updatedAt)     isDirty:false   } }

产生这个:

2016/5/12
2016/5/12
2016/5/12

但是你可以看到日期总是在今天,而不是我想要转换为该格式的日期。

为什么会这样?

3 个答案:

答案 0 :(得分:1)

你完全忽略了传递的date参数。将它放入Date对象构造函数:

const dateObj = new Date(date);

如果您在没有任何参数的情况下创建new Date(date)个对象,您将获得当前日期 - 这就是为什么您有三分之一2016/5/12

答案 1 :(得分:1)

您错误地使用了date。您的功能应如下所示:

function formatDate (date) {
    const dateObj = new Date(date)
    const y = dateObj.getFullYear()
    const m = dateObj.getMonth() + 1
    const d = dateObj.getDate()
    return y + '/' + m + '/' + d
}

另外,我想建议你http://momentjs.com/库,这是用于处理日期的标准库。它有很大的API和小的尺寸。

答案 2 :(得分:1)

将功能更改为

function formatDate(date) {
  const dateObj = new Date(date);
  const y = dateObj.getFullYear();
  const m = dateObj.getMonth() + 1;
  const d = dateObj.getDate();
  return y + '/' + m + '/' + d;
}