2011-01-20 36 views

Trả lời

13

var now = new Date();

now.format ("dd/MM/yyyy hh: mm TT");

có được đầy đủ chi tiết tại đây http://blog.stevenlevithan.com/archives/date-time-format

+0

Tôi đã cố gắng blog này, và thời gian sẽ được hiển thị như 20/50/2011 12:01 TT – nimi

+1

M đã sai. Chuyển đổi phía trên thấp hơn, bạn có phút mà tháng nên được và ngược lại. – Quibblesome

+0

Không chính xác, mm là phút và MM là tháng – Zac

5
function pad_2(number) 
{ 
    return (number < 10 ? '0' : '') + number; 
} 

function hours(date) 
{ 
    var hours = date.getHours(); 
    if(hours > 12) 
     return hours - 12; // Substract 12 hours when 13:00 and more 
    return hours; 
} 

function am_pm(date) 
{ 
    if(date.getHours()==0 && date.getMinutes()==0 && date.getSeconds()==0) 
     return ''; // No AM for MidNight 
    if(date.getHours()==12 && date.getMinutes()==0 && date.getSeconds()==0) 
     return ''; // No PM for Noon 
    if(date.getHours()<12) 
     return ' AM'; 
    return ' PM'; 
} 

function date_format(date) 
{ 
    return pad_2(date.getDate()) + '/' + 
      pad_2(date.getMonth()+1) + '/' + 
      (date.getFullYear() + ' ').substring(2) + 
      pad_2(hours(date)) + ':' + 
      pad_2(date.getMinutes()) + 
      am_pm(date); 
} 

Mã khắc phục như của ngày 03 Tháng 9 '12 lúc 10:11

+0

Kiểm tra công việc của bạn. Tôi đã thử điều này và có "03/06/112 05:02 PM" là đầu ra. Chỉ có điều đúng trong đó là thời gian. Ngày tháng, tháng và (rõ ràng) năm đều không chính xác. – Muhd

41

Nếu định dạng được "cố định" có nghĩa là bạn không cần phải sử dụng định dạng khác, bạn có thể có JavaScript thuần túy thay vì sử dụng toàn bộ thư viện để định dạng ngày:

//Pad given value to the left with "0" 
 
function AddZero(num) { 
 
    return (num >= 0 && num < 10) ? "0" + num : num + ""; 
 
} 
 

 
window.onload = function() { 
 
    var now = new Date(); 
 
    var strDateTime = [[AddZero(now.getDate()), 
 
     AddZero(now.getMonth() + 1), 
 
     now.getFullYear()].join("/"), 
 
     [AddZero(now.getHours()), 
 
     AddZero(now.getMinutes())].join(":"), 
 
     now.getHours() >= 12 ? "PM" : "AM"].join(" "); 
 
    document.getElementById("Console").innerHTML = "Now: " + strDateTime; 
 
};
<div id="Console"></div>

Biến số strDateTime sẽ giữ ngày/giờ theo định dạng bạn muốn và bạn có thể tinh chỉnh dễ dàng nếu cần.

Tôi đang sử dụng join làm thực tiễn tốt, không có gì hơn, tốt hơn là thêm chuỗi với nhau.

+0

... và nó hoạt động trong chrome –

+0

@ Jens yep nó về như là tiêu chuẩn càng tốt, khó tin rằng bất kỳ trình duyệt sẽ có cú pháp khác nhau cho các phương pháp ngày/giờ cơ bản. :) –

+1

giải pháp tuyệt vời, cũng để sử dụng định dạng chỉ trao đổi các câu lệnh AddZero (now.getDate()) và AddZero (now.getMonth() + 1) và điều chỉnh giờ là 12 nếu 0 và -12 nếu> 12 . Chúc may mắn và cảm ơn vì giải pháp – Gent

106

Ngữ nghĩa, có lẽ bạn đang tìm kiếm một liner

new Date().toLocaleString() 

mà định dạng ngày trong miền địa phương của người dùng.

Nếu bạn đang thực sự tìm kiếm một cách cụ thể để định dạng ngày, tôi khuyên bạn nên sử dụng thư viện moment.js.

+3

Cảm ơn bạn đã giới thiệu thư viện moment.js; thật tuyệt vơi. – carbontwelve

+3

Không ai nên viết mã ngày/giờ của riêng họ (như trong một số câu trả lời khác). Số lượng các trường hợp góc là đáng kinh ngạc. Hãy xem trang kiểm tra đơn vị cho moment.js (http://momentjs.com/tests/) - có 66701 kiểm tra! Chỉ cần sử dụng nó, nó rất tuyệt. Hoặc tìm một thư viện khác, nhưng không viết mã của riêng bạn cho điều này, bạn sẽ rất có thể bỏ lỡ một cái gì đó (tôi đã sai lầm này lên royally trong quá khứ). – sidewinderguy

+1

Tôi không hiểu tại sao rất khó để tìm một câu trả lời một dòng như thế này mà làm việc. Cảm ơn. – timhc22

6

Bạn có thể chuyển đổi Ngày sang hầu hết mọi định dạng bằng cách sử dụng Đoạn trích Tôi đã thêm bên dưới.

Code:

dateFormat(new Date(),"dd/mm/yy h:MM TT") 
//"20/06/14 6:49 PM" 

ví dụ khác

// Can also be used as a standalone function 
dateFormat(new Date(), "dddd, mmmm dS, yyyy, h:MM:ss TT"); 
// Saturday, June 9th, 2007, 5:46:21 PM 

dateFormat(new Date(),"dddd d mmmm yyyy") 
//Monday 2 June 2014" 

Snippet:

Thêm mã sau đây được lấy từ link này vào mã của bạn.

var dateFormat = function() { 
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, 
     timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, 
     timezoneClip = /[^-+\dA-Z]/g, 
     pad = function (val, len) { 
      val = String(val); 
      len = len || 2; 
      while (val.length < len) val = "0" + val; 
      return val; 
     }; 

    // Regexes and supporting functions are cached through closure 
    return function (date, mask, utc) { 
     var dF = dateFormat; 

     // You can't provide utc if you skip other args (use the "UTC:" mask prefix) 
     if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { 
      mask = date; 
      date = undefined; 
     } 

     // Passing date through Date applies Date.parse, if necessary 
     date = date ? new Date(date) : new Date; 
     if (isNaN(date)) throw SyntaxError("invalid date"); 

     mask = String(dF.masks[mask] || mask || dF.masks["default"]); 

     // Allow setting the utc argument via the mask 
     if (mask.slice(0, 4) == "UTC:") { 
      mask = mask.slice(4); 
      utc = true; 
     } 

     var _ = utc ? "getUTC" : "get", 
      d = date[_ + "Date"](), 
      D = date[_ + "Day"](), 
      m = date[_ + "Month"](), 
      y = date[_ + "FullYear"](), 
      H = date[_ + "Hours"](), 
      M = date[_ + "Minutes"](), 
      s = date[_ + "Seconds"](), 
      L = date[_ + "Milliseconds"](), 
      o = utc ? 0 : date.getTimezoneOffset(), 
      flags = { 
       d: d, 
       dd: pad(d), 
       ddd: dF.i18n.dayNames[D], 
       dddd: dF.i18n.dayNames[D + 7], 
       m: m + 1, 
       mm: pad(m + 1), 
       mmm: dF.i18n.monthNames[m], 
       mmmm: dF.i18n.monthNames[m + 12], 
       yy: String(y).slice(2), 
       yyyy: y, 
       h: H % 12 || 12, 
       hh: pad(H % 12 || 12), 
       H: H, 
       HH: pad(H), 
       M: M, 
       MM: pad(M), 
       s: s, 
       ss: pad(s), 
       l: pad(L, 3), 
       L: pad(L > 99 ? Math.round(L/10) : L), 
       t: H < 12 ? "a" : "p", 
       tt: H < 12 ? "am" : "pm", 
       T: H < 12 ? "A" : "P", 
       TT: H < 12 ? "AM" : "PM", 
       Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), 
       o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o)/60) * 100 + Math.abs(o) % 60, 4), 
       S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] 
      }; 

     return mask.replace(token, function ($0) { 
      return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); 
     }); 
    }; 
}(); 

// Some common format strings 
dateFormat.masks = { 
    "default":  "ddd mmm dd yyyy HH:MM:ss", 
    shortDate:  "m/d/yy", 
    mediumDate:  "mmm d, yyyy", 
    longDate:  "mmmm d, yyyy", 
    fullDate:  "dddd, mmmm d, yyyy", 
    shortTime:  "h:MM TT", 
    mediumTime:  "h:MM:ss TT", 
    longTime:  "h:MM:ss TT Z", 
    isoDate:  "yyyy-mm-dd", 
    isoTime:  "HH:MM:ss", 
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", 
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" 
}; 

// Internationalization strings 
dateFormat.i18n = { 
    dayNames: [ 
     "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", 
     "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 
    ], 
    monthNames: [ 
     "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 
     "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" 
    ] 
}; 

// For convenience... 
Date.prototype.format = function (mask, utc) { 
    return dateFormat(this, mask, utc); 
}; 
1

@Shadow Mã của thuật sĩ sẽ trả về 02:45 PM thay vì 14:45 PM. Vì vậy, tôi đổi mã của mình một chút:

function getNowDateTimeStr(){ 
var now = new Date(); 
var hour = now.getHours() - (now.getHours() >= 12 ? 12 : 0); 
return [[AddZero(now.getDate()), AddZero(now.getMonth() + 1), now.getFullYear()].join("/"), [AddZero(hour), AddZero(now.getMinutes())].join(":"), now.getHours() >= 12 ? "PM" : "AM"].join(" "); 
} 

//Pad given value to the left with "0" 
function AddZero(num) { 
    return (num >= 0 && num < 10) ? "0" + num : num + ""; 
} 
+0

hoạt động như một sự quyến rũ. –

Các vấn đề liên quan