Javascript 当只给出年份时,如何使Datejs只返回年份?
我使用从用户处获取日期,并将其转换为适合存储在数据库中的格式。当我提供带有月、日和年的日期时,我得到的正是我想要的,格式为年-月-日的日期:Javascript 当只给出年份时,如何使Datejs只返回年份?,javascript,parsing,date,user-input,datejs,Javascript,Parsing,Date,User Input,Datejs,我使用从用户处获取日期,并将其转换为适合存储在数据库中的格式。当我提供带有月、日和年的日期时,我得到的正是我想要的,格式为年-月-日的日期: var d1 = Date.parse('02/22/1984'); console.log(d1.toString('yyyy-MM-dd')); //Prints '1984-02-22' 但是,当我只给出一年时,我会在同一年返回,然后是今天的月份和日期: var d1 = Date.parse('1984'); co
var d1 = Date.parse('02/22/1984');
console.log(d1.toString('yyyy-MM-dd')); //Prints '1984-02-22'
但是,当我只给出一年时,我会在同一年返回,然后是今天的月份和日期:
var d1 = Date.parse('1984');
console.log(d1.toString('yyyy-MM-dd')); //Prints '1984-12-19'
当用户只键入年份时,我该如何确保该年份以以下格式返回
1984-00-00
同样,如果只给出月份和年份,我希望它的格式如下:
1984-02-00
Datejs返回一个JavaScript
Date
对象。该对象旨在表示时间点,时间点必须包括月份和日期。未提供时,Datejs将这些值默认为当前月份和日期。如果不想显示该信息,请更改格式模式:
var d1 = Date.parse('1984');
console.log(d1.toString('yyyy')); // prints 1984
如果需要根据用户最初输入的内容更改图案,则需要保存该信息,以便知道以后要打印什么
下面是一个简单的例子:
function DatePrinter(input) {
var s = input.split("/").length;
this.fmt = ["dd", "MM", "yyyy"].slice(3 - s).reverse().join("-");
this.date = Date.parse(input);
}
DatePrinter.prototype.toString = function() {
return (this.date.toString(this.fmt) + "-00-00").slice(0, 10);
}
一些测试:
new DatePrinter("02/22/1984").toString() // "1984-02-22"
new DatePrinter("02/1984").toString() // "1984-02-00"
new DatePrinter("1984").toString() // "1984-00-00"
当然,您应该执行
console.log(d1.toString('yyyy-00-00'))
或console.log(d1.toString('yyy')+'00-00')
?我需要测试应用这些格式的情况。有时用户只会输入日期,有时用户会输入年、月和日。我在这个问题中要求的是帮助编写代码,使用d1.yearOnly
和d1.yearAndMonthOnly