javascript中的字符串到日期格式

时间:2019-03-04 14:55:08

标签: javascript date

我的字符串应该是以下格式的日期:select t.* from (select t.*, sum(case when value = 'LOW' then 1 else 0 end) over (partition by row order by seq) as cnt from table t ) t where cnt = 1 and value <> 'LOW'; (这将是2019年2月1日)

我正在尝试将这些字符串转换为实际日期,所以我正在执行以下操作:

01.02.19

以上结果是1901年3月18日,应该是2018年2月1日。

我在做什么错了?

3 个答案:

答案 0 :(得分:1)

Date构造函数采用最大时间到最小时间,因此从年份开始。年份必须是完整的四位数,并且月份必须是零索引,所以2月将是月份1

要解决您的问题,请交换零件,将parts[1]减少1,并在parts[2]前面加上20

var parts ='01.02.19'.split('.');
var date = new Date("20" + parts[2], parts[1] - 1, parts[0]);

console.log(date.toGMTString());

答案 1 :(得分:1)

如果可以选择包含精彩的MomentJS,则可以:

moment("01.02.19", "DD.MM.YY").format("MMM DD YYYY") // Feb 01 2019

答案 2 :(得分:0)

您可以使用以下数组提取月份名称,也可以像这样更改新日期中各部分的顺序:

new Date(`${parts[1]}/${parts[0]}/${parts[2]}`);  

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];

var parts ='01.02.19'.split('.');

var mydate = new Date(`${parts[1]}/${parts[0]}/${parts[2]}`); 

console.log(` ${monthNames[mydate.getMonth()] } ${mydate.getDate()} ${mydate.getFullYear()}`)