是否有任何JS方法仅通过提供月份和年份作为参数来解析日期?

时间:2019-04-30 06:05:21

标签: javascript

我正在使用JavaScript日期选择器。我需要通过提供月份和年份来解析日期。例如,如果我将参数设为'01 / 2019',则输出应为Tue Jan 1 2019 00:00:00 GMT 05 30。我知道只有在参数应为有效日期(即,其格式应为.toUTCString())时,才可以使用dd mm yyyy来实现此目的。但就我而言,格式应为mm yyyy。有没有JS内置方法可以实现这一目标?

其他信息:由于未提供日期(dd),因此可以输入输入月份(mm)的第一个日期。 01/2019-星期二2019年1月1日00:00:00 GMT 05 30

3 个答案:

答案 0 :(得分:1)

是的,本机Date的构造函数,只需先颠倒月份和年份:

const reverse = americanDate => americanDate.split('/').reverse().join('.')
const jan2019 = new Date(reverse('01/2019')),
      feb2019 = new Date(reverse('2/2019')),
      // Date also works with 2 numbers: (month is 0-based)
      mar1990 = new Date(1990, 2)
      
console.log(jan2019, feb2019, mar1990)

答案 1 :(得分:1)

为了满足您的要求,为什么不以01/dd)格式将静态01/2019作为mm/yyyy添加

var currentDate = "01/2019";
var newDate = "01/"+currentDate;
var printDate = new Date(newDate);
document.write(printDate)

JSFiddle here

答案 2 :(得分:0)

有很多方法可以实现您的目标并使用Date类JavaScript。

您可以传递一个string文字日期并通过实例化为Date

进行解析
var date = new Date('2019/1');
console.log(date);

// Expected Output
// Tue Jan 01 2019 00:00:00 GMT+0800 (Malaysia Time)

您还可以使用Date的重载功能来分隔年,日期和月参数。

var date = new Date(2000, 0, 1);
// The order of parameter in here is Date(yyyy, mm, dd)
// The month starts at 0 so
// 0 = January
// 1 = February
// and so on...
// You can also pass string or integer in here

因此您可以在此处操纵所需的输出。对于更简洁的方法,您可以一个一个地获取数据,并且已经为年份,月份和日期设置了getter函数。也是时间!

var date = new Date(2000, 0, 1);
var month = date.getMonth() + 1; // adding 1 because the month is zero based
var year = date.getYear();

var output = month + '/' + year;

console.log(output);
// Expected Output
// 1/2000