【问题标题】:how to format mysql timestamp into mm/dd/yyyy H:i:s in javascript如何在javascript中将mysql时间戳格式化为mm/dd/yyyy H:i:s
【发布时间】:2013-03-09 10:59:51
【问题描述】:

我正在从作为时间戳的数据库中获取值。我需要使用 javascript 将其转换为 mm/dd/yyyy H:i:s。我尝试了以下代码。但它不能在 firefox/ie 中工作。但它在 chrome 中工作..如何解决它。

function formatDate(value){
if(value){
    Number.prototype.padLeft = function(base,chr){
        var  len = (String(base || 10).length - String(this).length)+1;
        return len > 0? new Array(len).join(chr || '0')+this : this;
    }
var d = new Date(value),
dformat = [ (d.getMonth()+1).padLeft(),
            d.getDate().padLeft(),
            d.getFullYear()].join('/')+
           ' ' +
          [ d.getHours().padLeft(),
            d.getMinutes().padLeft(),
            d.getSeconds().padLeft()].join(':');
 return dformat;
}

我在 firefox 中得到 NaN/NaN/NaN/NaN/NaN/NaN,即。非常感谢任何帮助

【问题讨论】:

标签: javascript jquery date


【解决方案1】:

您的代码缺少尾随 }。如果你格式化得更好,你会看到:

function formatDate(value){
  if(value){
    Number.prototype.padLeft = function(base,chr){
      var len = (String(base || 10).length - String(this).length)+1;
      return len > 0? new Array(len).join(chr || '0')+this : this;
    }
    var d = new Date(value),
    dformat = [ (d.getMonth()+1).padLeft(),
                 d.getDate().padLeft(),
                 d.getFullYear()].join('/')+
              ' ' +
              [ d.getHours().padLeft(),
                d.getMinutes().padLeft(),
                d.getSeconds().padLeft()].join(':');
    return dformat;
  }
}

它现在在 Firefox 中运行良好。

请注意,您每次调用此函数时都在定义Number.prototype.padLeft。最好把它移出函数体。


编辑根据我的评论,这对您来说失败的原因是 Date 对象将只接受某些格式的字符串。此外,在我看来,您的函数只是在更改字符串的格式:您实际上不需要费心处理日期,而是只需对输入进行字符串操作:

var formatDate = function(dateString) {
  // Convert 'yyyy-mm-dd hh:mm:ss' to 'mm/dd/yyyy hh:mm:ss'
  return dateString.replace(/^(\d{4})-(\d{2})-(\d{2})/, '$2/$3/$1');
};

容易多了!

【讨论】:

  • 问题是,如果你的时间戳是2013-03-14 06:32:33,Firefox 不能解析这个:它只会解析IETF-compliant RFC2822 timestamps。一个快速的解决方法是将破折号更改为斜杠:var d = new Date(value.replace(/-/g, '/')),,假设解析到函数的值将始终采用相同的格式。
  • 查看编辑以获得更简洁的解决方案,而不是搞乱日期解析。
【解决方案2】:
function formatDate(d) 
{
    d = new Date(d * 1000);
    return d.getMonth() + 1 + '/' + d.getDate() + '/' + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();

}

【讨论】:

    【解决方案3】:

    Javascript 已经知道如何使用时间戳。

    var d = new Date(timestamp * 1000); //will create a date object
    

    然后,您可以使用所有 Javascript 日期方法对其进行格式化。 (http://www.w3schools.com/jsref/jsref_obj_date.asp)

    编辑:将时间戳转换为毫秒 (*1000)

    【讨论】:

    • @Deepu 显示你的时间戳值??
    • 2013-03-14 06:32:33 这是一个时间戳值
    • @Deepu 您的数据库列真的是 'timestamp' 类型吗?因为时间戳必须如下所示:1363779021
    • 您必须将其转换为时间戳。你可以使用 UNIX_TIMESTAMP() mysql 函数SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2018-08-15
    • 2016-05-23
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多