目前是否有格式预设为“ YYYY-MM-DD”

时间:2018-09-03 16:26:08

标签: javascript momentjs

我使用的是时刻,在大多数情况下,我只需要获取日期作为字符串,将日期传递给数据库的格式,或者只是一个比较(片刻,请帮我比较一下,但仍然可以)。 / p>

每次我都需要这种特殊格式时,我必须写.format('YYYY-MM-DD'),并且我想知道是否存在诸如C之类的预设或完整I对于iso。我在文档中找不到任何内容,只有L

的国际化版本

3 个答案:

答案 0 :(得分:2)

如果您没有在文档中看到它(并且我也没有),这表明不存在,Moment中没有当前的预设。

您总是可以添加自己的:

Object.defineProperty(moment.fn, "myYMD", { // or moment.prototype, they refer to
                                            // the same object according to the docs
    value: function() {
        return this.format("YYYY-MM-DD");
    },
    configurable: true,
    writable: true
});

(使用Object.defineProperty是因为我从未将可枚举的属性添加到原型中。)

请注意方法名称上的前缀,以免与以后的Moment扩展名冲突。

示例:

Object.defineProperty(moment.fn, "myYMD", {
    value: function() {
        return this.format("YYYY-MM-DD");
    },
    configurable: true,
    writable: true
});

// using it
console.log(moment().myYMD());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

或者只是使用实用程序方法将Moment实例传递到其中。

答案 1 :(得分:1)

作为版本 2.20.0 ,您可以使用Special Formats(即使在文档的分析部分中提到了它们),例如,您可以使用moment.HTML5_FMT.DATE获取YYYY-MM-DD格式的输出:

console.log(moment().format(moment.HTML5_FMT.DATE));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

如果需要,还可以自定义default format,以使format()(不带参数)以您喜欢的格式显示结果:

console.log(moment().format());
moment.defaultFormat = 'YYYY-MM-DD';
console.log(moment().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

或者,如果您愿意,可以extend使用moment.fn并构建一个接受令牌的函数(例如'C''I'):

moment.fn.myFormat = function(token){
  if( token == 'C' ){
    return this.format('YYYY-MM-DD');
  } else if( token == 'I' ){
    return this.toISOString();
  } else {
    return this.format();
  }
}
console.log(moment().myFormat());
console.log(moment().myFormat('C'));
console.log(moment().myFormat('I'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

  

Moment原型通过moment.fn公开。如果要添加自己的功能,则可以在其中放置它们。

答案 2 :(得分:0)

根据Long Date Formats部分的定义,您可以定义以下格式:

moment.updateLocale('en', {
    longDateFormat : {
        LT: "h:mm A",
        LTS: "h:mm:ss A",
        L: "MM/DD/YYYY",
        l: "M/D/YYYY",
        LL: "MMMM Do YYYY",
        ll: "MMM D YYYY",
        LLL: "MMMM Do YYYY LT",
        lll: "MMM D YYYY LT",
        LLLL: "dddd, MMMM Do YYYY LT",
        llll: "ddd, MMM D YYYY LT"
    }
});

然后使用它,例如:

moment().format("L");

就我所知,这是预设您自己的格式的最佳方法。