如何从字符串中确定日期格式?

时间:2016-12-29 14:12:46

标签: javascript datetime

这个问题今天已经被问到,但是主人似乎已经删除了它(即使它有4个投票)。然而问题是如此有趣,我决定再次发布自己。

我在Javascript中有一个对象,它有一个带有日期字符串的属性。

现在我想为该属性设置一个新的日期时间,但是如何在不知道其格式的情况下设置新数据呢?

示例日期时间如下所示“2018-01-01T20:09:00”

这个问题可以分为2个答案。

  1. 确定当前提及的格式&将相同的格式设置为对象属性。(如果有人说这是什么类型的日期时间格式,这似乎很容易实现)

  2. 确定一些确定任何日期时间格式的通用解决方案。将给定的datetime转换为set object属性。

2 个答案:

答案 0 :(得分:2)

var dat = new Date('2018-01-01T20:09:00');
console.log(dat.getFullYear());
console.log(dat.getUTCHours());
console.log(dat.getUTCMinutes());

答案 1 :(得分:1)

如果你可以使用moment.js,那么下面的工作就是:

var dateFormats = {
  "iso_int" : "YYYY-MM-DD",
  "short_date" : "DD/MM/YYYY",
  "iso_date_time": "YYYY-MM-DDTHH:MM:SS",
  "iso_date_time_utc": "YYYY-MM-DDTHH:MM:SSZ"
   //define other well known formats if you want
}

function getFormat(d){
  for (var prop in dateFormats) {
        if(moment(d, dateFormats[prop],true).isValid()){
           return dateFormats[prop];
        }
  }
  return null;
}

var dateInput = "2018-01-01T20:09:00";

var formatFound = getFormat(dateInput); //returns "YYYY-MM-DDTHH:MM:SS"
if(formatFound !==null){
   //do stuff
}

默认情况下,检查the moment js docs以获取有关受支持的dateFormats的更多信息,并使用它们填充dateFormats对象。

相关问题