Date.prototype.format = function(format)
{
  var o = {  //author: meizz
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(),    //day
    "h+" : this.getHours(),   //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
    "S" : this.getMilliseconds() //millisecond
  }
  if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
      RegExp.$1.length==1 ? o[k] : 
        ("00"+ o[k]).substr((""+ o[k]).length));
  return format;
};alert(new Date().format("hh:mm:ss"));
alert(new Date().format("hh时mm分ss秒"));
alert(new Date().format("yyyy-MM-dd hh:mm:ss"));

解决方案 »

  1.   

    / * dateTimeToStr special chars and their meaning:
     * -------------------------------------------------
     *
     * |-------|-------------------------------|---------------|
     * | Char  |          Description          |   Example     |
     * |-------|-------------------------------|---------------|
     * |   ~y  | Year - two digits             | 04            |
     * |-------|-------------------------------|---------------|
     * |   ~Y  | Year - four digits            | 2004          |
     * |-------|-------------------------------|---------------|
     * |   ~d  | Day in month                  | 01 - 31       |
     * |-------|-------------------------------|---------------|
     * |   ~D  | Day in month (Full string)    | Sunday        |
     * |-------|-------------------------------|---------------|
     * |   ~w  | Day in week                   | 0 - 6         |
     * |-------|-------------------------------|---------------|
     * |   ~W  | Day in week                   | 1 - 7         |
     * |-------|-------------------------------|---------------|
     * |   ~k  | Month in year                 | 1 - 12        |
     * |-------|-------------------------------|---------------|
     * |   ~M  | Month in year (Full string)   | April         |
     * |-------|-------------------------------|---------------|
     * |   ~a  | AM/PM er         | AM, PM        |
     * |-------|-------------------------------|---------------|
     * |   ~h  | Hour (12 hours)            | 02            |
     * |-------|-------------------------------|---------------|
     * |   ~H  | Hour (24 hours)            | 14            |
     * |-------|-------------------------------|---------------|
     * |   ~m  | Minutes              | 69 :-)        |
     * |-------|-------------------------------|---------------|
     * |   ~s  | Seconds              | 69 :-)        |
     * |-------|-------------------------------|---------------|
     * |   ~S  | Milliseconds              | 451           |
     * |-------|-------------------------------|---------------|
     * |   ~L  | Long value              | 1076502654847 |
     * |-------|-------------------------------|---------------|
    */function dateTimeToStr (date, stringFormat) {
    var monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    var dayArray = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); var buffer = new Array();
    try{
    for (var i = 0; i < stringFormat.length; i++){
    var chr1 = stringFormat.charAt(i);
    if(chr1 == "~"){
    buffer[buffer.length] = getNextToken(stringFormat.charAt(++i), date);
    }else{
    buffer[buffer.length] = chr1;
    }
    }
    }catch(e){
    return null;
    } return buffer.join("");
    }function getNextToken (chr, date){
    var ret = chr;
    switch (chr){
    case "y":
    //year tow digits (04)
    ret = new String(date.getFullYear()).substr(2);
    break;
    case "Y":
    //year four digits (2004)
    ret = date.getFullYear();
    break;
    case "d":
    //day in month (1 - 31)
    ret = date.getDate();
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "D":
    //day in week (Full String)
    ret = dayArray[date.getDay()];
    break;
    case "w":
    //day of week (0-6)
    ret = date.getDay();
    break;
    case "W":
    //day of week (1-7)
    ret = date.getDay() + 1;
    break;
    case "k":
    //month of year (1-12)
    ret = date.getMonth() + 1;
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "M":
    //month of year (full string)
    ret = monthArray[date.getMonth()];
    break;
    case "a":
    //am/pm er
    ret = date.getHours() < 12 ? "AM" : "PM";
    break;
    case "h":
    //hour (12 hours)
    ret = date.getHours();
    ret = ret > 12 ? ret - 12 : ret;
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "H":
    //hour (24 hours)
    ret = date.getHours();
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "m":
    //minutes
    ret = date.getMinutes();
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "s":
    //secondes
    ret = date.getSeconds();
    ret = ret < 10 ? "0" + ret : ret;
    break;
    case "S":
    //milisecondes
    ret = date.getMilliseconds();
    break;
    case "L":
    //long value
    ret = date.valueOf();
    break;
    }
    return ret;
    }alert(new Date(), "~Y-~k-~dT~H:~m:~sZ");