使JavaScript日期函数接受字符串或日期对象

时间:2015-09-16 20:50:18

标签: javascript date

我在下面有这个简单的JavaScript函数,可以将JavaScript日期转换为更易读的格式。

现在你必须传入一个有效的Date对象,但是我想修改它以便它接受Date对象或带有日期值的字符串,并返回格式化的日期,而不管传递给它的是哪个版本。

function formatDate(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
}

用法:

var d = new Date(date_string);
var e = formatDate(d);

将此2015-09-16 03:18:12转换为9/16/2015 3:18 pm

我希望能够传入Date对象...

var dateObject = new Date(date_string);
var e = formatDate(dateObject);

或日期字符串...

var dateString = `2015-09-16 03:18:12`;
var e = formatDate(dateString);

2 个答案:

答案 0 :(得分:1)

执行此操作的方法是通过typeof在函数中进行类型检查。

function formatDate(date) {
  if(typeof date === "string") {
    // parse the date string into a Date object
  }
  // now date is already a Date object, or it has been parsed
  var hours = date.getHours();
  ...

实际上解析Date字符串超出了问题的范围。

答案 1 :(得分:1)

在决定走哪条路之前,您可以检查变量的类型:

function formatDate(date) {
    if(typeof(date) == "string") {
        var date_string = date;
        date = new Date(date_string);
    }
    // Then just keep going!
}