首页 > 解决方案 > Vue.js 日期无效

问题描述

我有几个使用日期的 .vue 类。

我遇到的问题是,当我在使用 Chrome 调试工具时在 SharePoint 页面上上传代码时,会出现很多日期错误,例如

Not a valid date: "2019-09-19T01:00:00Z" (见截图)

截屏

在互联网上,我只在 github 上找到了这个:

https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md

所以我尝试只使用MM大写字母,但错误仍然出现。

我在 Vue.js 方面没有太多经验,所以我不知道我到底可以尝试改变什么。

在我的data:function()我得到以下部分

data: function() {
return {
  baseImageUrl: this.$store.state.baseImageUrl,
  histories: [],

  columns: [
    {
      label: "Created On",
      field: "createdAt",
      type: "date",
      dateInputFormat: "yyyy-MM-dd",
      dateOutputFormat: "DD.MM.YYYY",
      thClass: "text-left",
      tdClass: "text-center",
      width: '151px',
      filterOptions: {
        enabled: true,
        placeholder: "Date",
       // filterFn: this.myColumnFilter
      }
    },

在我的methods我得到

HistorysData: function(data) {
  var data = data.d.results;
  this.histories = [];
  var $this = this;
  for (var i = 0; i < data.length; i++) {
    var Created = this.getJSONDateAsString(data[i].Created, "dd.MM.yyyy");

    $this.rows.push({
      createdAt: data[i].date,
      action: data[i].act,
      details: data[i].details,
      correspondingListID: data[i].CorrespondingListID
    });
  }  
},

getJSONDateAsString定义为

getJSONDateAsString: function(jsdatevalue, returnFormat) {
  if ((jsdatevalue == "") | (jsdatevalue == null)) {
    return "";
  }
  return new Date(jsdatevalue).toString(returnFormat);
}

标签: datevue.jssharepoint

解决方案


对日期应用过滤器并返回标准日期格式以供输出。Format 函数来自date-fns,但您可以使用任何将其格式化为 MM/DD/YYYY 的东西。还有其他公认的ISO 格式,但这是我迄今为止使用过的最可靠的格式。

    DateFilter(dateString: string) {
        if (dateString) {
            return format(dateString, 'MM/DD/YYYY');
        }
        else {
            return "";
        }
    },

如果你也需要时间

        DateTimeFilter(dateString: string) {
            if (dateString) {
                return format(dateString, 'MM/DD/YYYY HH:mm');
            }
            else {
                return "";
            }
        },

推荐阅读