2

タイムスタンプであるデータベースから値を取得しています。そして、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を取得しています.Anyヘルプは大歓迎です

4

3 に答える 3

5

コードに末尾の}. より適切にフォーマットすると、次のようになります。

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-20T11:29:22.663 に答える
1
function formatDate(d) 
{
    d = new Date(d * 1000);
    return d.getMonth() + 1 + '/' + d.getDate() + '/' + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();

}
于 2013-03-20T11:26:29.247 に答える
0

Javascript は、タイムスタンプの操作方法を既に知っています。

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

その後、すべての Javascript Date メソッドを使用してフォーマットできます。( http://www.w3schools.com/jsref/jsref_obj_date.asp )

EDIT : タイムスタンプをミリ秒に変換します (*1000)

于 2013-03-20T11:24:01.860 に答える