2011-11-11 25 views

Trả lời

15

Ngạc nhiên không ai được đăng tải khoảng moment.js, nó rất giống với date.js, nhưng nhẹ hơn (5.5k minified)

http://momentjs.com/

Chỉ cần làm một chuẩn mực và thấy nó phân tích nhanh hơn nhiều so date.js nhưng định dạng và thao tác chậm hơn. Đối với một lớp lót, nó sẽ thực thi nhanh hơn date.js do phân tích cú pháp nhanh hơn.

http://jsperf.com/underscore-date-vs-datejs/7

Một số ví dụ sử dụng:

// Simulates ajax response 
var data = { someDate: "2023-08-23 11:52:39" } 

// .unix() converts to Unix timestamp: 1692816759 
moment(data.someDate).unix(); 

// Displaying it in a readable format 
// Aug 23, 11:52 AM 
moment("2023-08-23 11:52:39").format('MMM D, hh:mm A'); 

// Now 
moment(); 

// Support for manipulation and chaining 
moment().add('days', 7).subtract('months', 1).hours(15).minutes(0).seconds(0); 
+0

Chúng tôi đã bắt đầu sử dụng điều này một chút. Thật tuyệt vời :). – Will

4

Tôi sử dụng Datejs.

+0

Thật tuyệt vời! đó là tuyệt vời! Tôi chưa bao giờ nghe về nó ... tìm thấy tuyệt vời. –

+0

Mặc dù đây là câu trả lời thực sự cũ, hãy xem xét rằng OP đã yêu cầu tương đương với hàm 'date' của PHP trong JS. Vì không có tích hợp sẵn, một liên kết đến một thư viện là hợp lý. Cấp, câu trả lời có thể đã được cải thiện với một mẫu mã, nhưng "phần thiết yếu" thực sự là liên kết trong trường hợp này. – simshaun

2

Nếu bạn đến từ PHP, bạn có thể tận hưởng cổng strftime này để JS.

http://hacks.bluesmoon.info/strftime/demo.html

var dateObj = new Date('2011/11/11'); 
var dayOfYear = dateObj.strftime("%j"); 

Tôi đã sử dụng nó một bó và nó thật tuyệt vời. Tôi tin rằng trọng lượng nhẹ hơn đáng kể so với Datejs.

0

tôi sử dụng date_to_string() function

/* 
* date_to_string v1.0.0 
* 
* Copyright (c) 2013 Andrew G. Johnson <[email protected]> 
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
* 
* @author Andrew G. Johnson <[email protected]> 
* @copyright Copyright (c) 2013 Andrew G. Johnson <[email protected]> 
* @link http://github.com/andrewgjohnson/date_to_string 
* @license http://www.opensource.org/licenses/mit-license.php The MIT License 
* @version 1.0.0 
* @package date_to_string 
* 
*/ 

if (typeof date_to_string == "undefined") 
{ 
    var date_to_string = function(format,date) { 
     format = String(format); 
     date = typeof date != "undefined" && date instanceof Date ? date : new Date(); 

     var formats = { 
      a:function(date) { 
       return date.getHours() < 12 ? "am" : "pm"; 
      }, 
      A:function(date) { 
       return date.getHours() < 12 ? "AM" : "PM"; 
      }, 
      B:function(date) { 
       return ("000" + Math.floor((date.getHours() * 60 * 60 + (date.getMinutes() + 60 + date.getTimezoneOffset()) * 60 + date.getSeconds())/86.4) % 1000).slice(-3); 
      }, 
      c:function(date) { 
       return date_to_string("Y-m-d\\TH:i:s",date); 
      }, 
      d:function(date) { 
       return (date.getDate() < 10 ? "0" : "") + date.getDate(); 
      }, 
      D:function(date) { 
       switch (date.getDay()) 
       { 
        case 0: 
         return "Sun"; 

        case 1: 
         return "Mon"; 

        case 2: 
         return "Tue"; 

        case 3: 
         return "Wed"; 

        case 4: 
         return "Thu"; 

        case 5: 
         return "Fri"; 

        case 6: 
         return "Sat"; 
       } 
      }, 
      e:function(date) { 
       var 
        first = parseInt(Math.abs(date.getTimezoneOffset()/60),10), 
        second = Math.abs(date.getTimezoneOffset() % 60); 
       return (new Date().getTimezoneOffset() < 0 ? "+" : "-") + (first < 10 ? "0" : "") + first + (second < 10 ? "0" : "") + second; 
      }, 
      F:function(date) { 
       switch (date.getMonth()) 
       { 
        case 0: 
         return "January"; 

        case 1: 
         return "February"; 

        case 2: 
         return "March"; 

        case 3: 
         return "April"; 

        case 4: 
         return "May"; 

        case 5: 
         return "June"; 

        case 6: 
         return "July"; 

        case 7: 
         return "August"; 

        case 8: 
         return "September"; 

        case 9: 
         return "October"; 

        case 10: 
         return "November"; 

        case 11: 
         return "December"; 
       } 
      }, 
      g:function(date) { 
       return date.getHours() > 12 ? date.getHours() - 12 : date.getHours(); 
      }, 
      G:function(date) { 
       return date.getHours(); 
      }, 
      h:function(date) { 
       var hour = date.getHours() > 12 ? date.getHours() - 12 : date.getHours(); 
       return (hour < 10 ? "0" : "") + hour; 
      }, 
      H:function(date) { 
       return (date.getHours() < 10 ? "0" : "") + date.getHours(); 
      }, 
      i:function(date) { 
       return (date.getMinutes() < 10 ? "0" : "") + date.getMinutes(); 
      }, 
      I:function(date) { 
       return date.getTimezoneOffset() < Math.max(new Date(date.getFullYear(),0,1).getTimezoneOffset(),new Date(date.getFullYear(),6,1).getTimezoneOffset()) ? 1 : 0; 
      }, 
      j:function(date) { 
       return date.getDate(); 
      }, 
      l:function(date) { 
       switch (date.getDay()) 
       { 
        case 0: 
         return "Sunday"; 

        case 1: 
         return "Monday"; 

        case 2: 
         return "Tuesday"; 

        case 3: 
         return "Wednesday"; 

        case 4: 
         return "Thursday"; 

        case 5: 
         return "Friday"; 

        case 6: 
         return "Saturday"; 
       } 
      }, 
      L:function(date) { 
       return new Date(date.getFullYear(),1,29).getMonth() == 1 ? 1 : 0; 
      }, 
      m:function(date) { 
       return (date.getMonth() + 1 < 10 ? "0" : "") + (date.getMonth() + 1); 
      }, 
      M:function(date) { 
       switch (date.getMonth()) 
       { 
        case 0: 
         return "Jan"; 

        case 1: 
         return "Feb"; 

        case 2: 
         return "Mar"; 

        case 3: 
         return "Apr"; 

        case 4: 
         return "May"; 

        case 5: 
         return "Jun"; 

        case 6: 
         return "Jul"; 

        case 7: 
         return "Aug"; 

        case 8: 
         return "Sep"; 

        case 9: 
         return "Oct"; 

        case 10: 
         return "Nov"; 

        case 11: 
         return "Dec"; 
       } 
      }, 
      n:function(date) { 
       return date.getMonth() + 1; 
      }, 
      N:function(date) { 
       return date.getDay() == 0 ? 7 : date.getDay(); 
      }, 
      o:function(date) { 
       return date.getWeekYear(); 
      }, 
      O:function(date) { 
       var 
        first = parseInt(Math.abs(date.getTimezoneOffset()/60),10), 
        second = Math.abs(date.getTimezoneOffset() % 60); 
       return (new Date().getTimezoneOffset() < 0 ? "+" : "-") + (first < 10 ? "0" : "") + first + (second < 10 ? "0" : "") + second; 
      }, 
      P:function(date) { 
       var 
        first = parseInt(Math.abs(date.getTimezoneOffset()/60),10), 
        second = Math.abs(date.getTimezoneOffset() % 60); 
       return (new Date().getTimezoneOffset() < 0 ? "+" : "-") + (first < 10 ? "0" : "") + first + ":" + (second < 10 ? "0" : "") + second; 
      }, 
      r:function(date) { 
       return date_to_string("D, d M Y H:i:s O",date); 
      }, 
      s:function(date) { 
       return (date.getSeconds() < 10 ? "0" : "") + date.getSeconds(); 
      }, 
      S:function(date) { 
       switch (date.getDate()) 
       { 
        case 1: 
        case 21: 
        case 31: 
         return "st"; 

        case 2: 
        case 22: 
         return "nd"; 

        case 3: 
        case 23: 
         return "rd"; 

        default: 
         return "th"; 
       } 
      }, 
      t:function(date) { 
       return new Date(date.getFullYear(),date.getMonth() + 1,0).getDate(); 
      }, 
      T:function(date) { 
       var abbreviation = String(date).match(/\(([^\)]+)\)$/) || String(date).match(/([A-Z]+) [\d]{4}$/); 
       if (abbreviation) 
        abbreviation = abbreviation[1].match(/[A-Z]/g).join(""); 
       return abbreviation; 
      }, 
      u:function(date) { 
       return date.getMilliseconds() * 1000; 
      }, 
      U:function(date) { 
       return Math.round(date.getTime()/1000); 
      }, 
      w:function(date) { 
       return date.getDay(); 
      }, 
      W:function(date) { 
       return date.getWeek(); 
      }, 
      y:function(date) { 
       return String(date.getFullYear()).substring(2,4); 
      }, 
      Y:function(date) { 
       return date.getFullYear(); 
      }, 
      z:function(date) { 
       return Math.floor((date.getTime() - new Date(date.getFullYear(),0,1).getTime())/(1000 * 60 * 60 * 24)); 
      }, 
      Z:function(date) { 
       return (date.getTimezoneOffset() < 0 ? "+" : "-") + (date.getTimezoneOffset() * 24); 
      } 
     }; 

     var 
      string = "", 
      escaped = false; 
     for (var position = 0;position < format.length;position++) 
     { 
      if (!escaped && format.substring(position,position + 1) == "\\") 
       escaped = true; 
      else if (escaped || typeof formats[format.substring(position,position + 1)] == "undefined") 
      { 
       string += String(format.substring(position,position + 1)); 
       escaped = false; 
      } 
      else 
       string += String(formats[format.substring(position,position + 1)](date)); 
     } 
     return string; 
    }; 
} 

// http://techblog.procurios.nl/k/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html 
Date.prototype.getWeek = function() { 
    var target = new Date(this.valueOf()); 
    var dayNr = (this.getDay() + 6) % 7; 
    target.setDate(target.getDate() - dayNr + 3); 
    var firstThursday = target.valueOf(); 
    target.setMonth(0,1); 
    if (target.getDay() != 4) { 
     target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7); 
    } 
    return 1 + Math.ceil((firstThursday - target)/(1000 * 60 * 60 * 24 * 7)); 
}; 
Date.prototype.getWeekYear = function() { 
    var target = new Date(this.valueOf()); 
    target.setDate(target.getDate() - ((this.getDay() + 6) % 7) + 3); 
    return target.getFullYear(); 
}; 
+0

Chính xác những gì tôi cần: một bổ sung chức năng đơn giản để hoàn thành công việc. Cảm ơn! –

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/11105721) –

+1

@AndrewBrooke Đây là một nỗ lực để trả lời câu hỏi ngay cả khi đánh dấu liên kết bị xóa. Câu trả lời này không nên được gắn cờ, và do đó không nên được đề nghị xóa trong LQPRQ. Xem: [Bạn đang làm sai: Lời cầu xin về sự lành mạnh trong hàng đợi Bài đăng có chất lượng thấp] (http://meta.stackoverflow.com/q/287563/4639281) và [Câu trả lời của bạn nằm trong một lâu đài khác: khi nào là câu trả lời không phải là câu trả lời?] (http://meta.stackexchange.com/q/225370/288751) –

1

Theo các tác giả, phpjs date() là "một tương đương JavaScript của ngày PHP". Vì vậy, nếu đó là những gì bạn đang tìm kiếm, hãy thử.

Sửa

Trong trường hợp các trang web từ xa đi xuống, đây là đoạn code (lấy 2016/02/03):

function date(format, timestamp) { 
    // discuss at: http://phpjs.org/functions/date/ 
    // original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com) 
    // original by: gettimeofday 
    // parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html) 
    // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // improved by: MeEtc (http://yass.meetcweb.com) 
    // improved by: Brad Touesnard 
    // improved by: Tim Wiel 
    // improved by: Bryan Elliott 
    // improved by: David Randall 
    // improved by: Theriault 
    // improved by: Theriault 
    // improved by: Brett Zamir (http://brett-zamir.me) 
    // improved by: Theriault 
    // improved by: Thomas Beaucourt (http://www.webapp.fr) 
    // improved by: JT 
    // improved by: Theriault 
    // improved by: Rafał Kukawski (http://blog.kukawski.pl) 
    // improved by: Theriault 
    // input by: Brett Zamir (http://brett-zamir.me) 
    // input by: majak 
    // input by: Alex 
    // input by: Martin 
    // input by: Alex Wilson 
    // input by: Haravikk 
    // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // bugfixed by: majak 
    // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
    // bugfixed by: Brett Zamir (http://brett-zamir.me) 
    // bugfixed by: omid (http://phpjs.org/functions/380:380#comment_137122) 
    // bugfixed by: Chris (http://www.devotis.nl/) 
    //  note: Uses global: php_js to store the default timezone 
    //  note: Although the function potentially allows timezone info (see notes), it currently does not set 
    //  note: per a timezone specified by date_default_timezone_set(). Implementers might use 
    //  note: this.php_js.currentTimezoneOffset and this.php_js.currentTimezoneDST set by that function 
    //  note: in order to adjust the dates in this function (or our other date functions!) accordingly 
    // example 1: date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400); 
    // returns 1: '09:09:40 m is month' 
    // example 2: date('F j, Y, g:i a', 1062462400); 
    // returns 2: 'September 2, 2003, 2:26 am' 
    // example 3: date('Y W o', 1062462400); 
    // returns 3: '2003 36 2003' 
    // example 4: x = date('Y m d', (new Date()).getTime()/1000); 
    // example 4: (x+'').length == 10 // 2009 01 09 
    // returns 4: true 
    // example 5: date('W', 1104534000); 
    // returns 5: '53' 
    // example 6: date('B t', 1104534000); 
    // returns 6: '999 31' 
    // example 7: date('W U', 1293750000.82); // 2010-12-31 
    // returns 7: '52 1293750000' 
    // example 8: date('W', 1293836400); // 2011-01-01 
    // returns 8: '52' 
    // example 9: date('W Y-m-d', 1293974054); // 2011-01-02 
    // returns 9: '52 2011-01-02' 

    var that = this; 
    var jsdate, f; 
    // Keep this here (works, but for code commented-out below for file size reasons) 
    // var tal= []; 
    var txt_words = [ 
    'Sun', 'Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur', 
    'January', 'February', 'March', 'April', 'May', 'June', 
    'July', 'August', 'September', 'October', 'November', 'December' 
    ]; 
    // trailing backslash -> (dropped) 
    // a backslash followed by any character (including backslash) -> the character 
    // empty string -> empty string 
    var formatChr = /\\?(.?)/gi; 
    var formatChrCb = function(t, s) { 
    return f[t] ? f[t]() : s; 
    }; 
    var _pad = function(n, c) { 
    n = String(n); 
    while (n.length < c) { 
     n = '0' + n; 
    } 
    return n; 
    }; 
    f = { 
    // Day 
    d: function() { // Day of month w/leading 0; 01..31 
     return _pad(f.j(), 2); 
    }, 
    D: function() { // Shorthand day name; Mon...Sun 
     return f.l() 
     .slice(0, 3); 
    }, 
    j: function() { // Day of month; 1..31 
     return jsdate.getDate(); 
    }, 
    l: function() { // Full day name; Monday...Sunday 
     return txt_words[f.w()] + 'day'; 
    }, 
    N: function() { // ISO-8601 day of week; 1[Mon]..7[Sun] 
     return f.w() || 7; 
    }, 
    S: function() { // Ordinal suffix for day of month; st, nd, rd, th 
     var j = f.j(); 
     var i = j % 10; 
     if (i <= 3 && parseInt((j % 100)/10, 10) == 1) { 
     i = 0; 
     } 
     return ['st', 'nd', 'rd'][i - 1] || 'th'; 
    }, 
    w: function() { // Day of week; 0[Sun]..6[Sat] 
     return jsdate.getDay(); 
    }, 
    z: function() { // Day of year; 0..365 
     var a = new Date(f.Y(), f.n() - 1, f.j()); 
     var b = new Date(f.Y(), 0, 1); 
     return Math.round((a - b)/864e5); 
    }, 

    // Week 
    W: function() { // ISO-8601 week number 
     var a = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3); 
     var b = new Date(a.getFullYear(), 0, 4); 
     return _pad(1 + Math.round((a - b)/864e5/7), 2); 
    }, 

    // Month 
    F: function() { // Full month name; January...December 
     return txt_words[6 + f.n()]; 
    }, 
    m: function() { // Month w/leading 0; 01...12 
     return _pad(f.n(), 2); 
    }, 
    M: function() { // Shorthand month name; Jan...Dec 
     return f.F() 
     .slice(0, 3); 
    }, 
    n: function() { // Month; 1...12 
     return jsdate.getMonth() + 1; 
    }, 
    t: function() { // Days in month; 28...31 
     return (new Date(f.Y(), f.n(), 0)) 
     .getDate(); 
    }, 

    // Year 
    L: function() { // Is leap year?; 0 or 1 
     var j = f.Y(); 
     return j % 4 === 0 & j % 100 !== 0 | j % 400 === 0; 
    }, 
    o: function() { // ISO-8601 year 
     var n = f.n(); 
     var W = f.W(); 
     var Y = f.Y(); 
     return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0); 
    }, 
    Y: function() { // Full year; e.g. 1980...2010 
     return jsdate.getFullYear(); 
    }, 
    y: function() { // Last two digits of year; 00...99 
     return f.Y() 
     .toString() 
     .slice(-2); 
    }, 

    // Time 
    a: function() { // am or pm 
     return jsdate.getHours() > 11 ? 'pm' : 'am'; 
    }, 
    A: function() { // AM or PM 
     return f.a() 
     .toUpperCase(); 
    }, 
    B: function() { // Swatch Internet time; 000..999 
     var H = jsdate.getUTCHours() * 36e2; 
     // Hours 
     var i = jsdate.getUTCMinutes() * 60; 
     // Minutes 
     var s = jsdate.getUTCSeconds(); // Seconds 
     return _pad(Math.floor((H + i + s + 36e2)/86.4) % 1e3, 3); 
    }, 
    g: function() { // 12-Hours; 1..12 
     return f.G() % 12 || 12; 
    }, 
    G: function() { // 24-Hours; 0..23 
     return jsdate.getHours(); 
    }, 
    h: function() { // 12-Hours w/leading 0; 01..12 
     return _pad(f.g(), 2); 
    }, 
    H: function() { // 24-Hours w/leading 0; 00..23 
     return _pad(f.G(), 2); 
    }, 
    i: function() { // Minutes w/leading 0; 00..59 
     return _pad(jsdate.getMinutes(), 2); 
    }, 
    s: function() { // Seconds w/leading 0; 00..59 
     return _pad(jsdate.getSeconds(), 2); 
    }, 
    u: function() { // Microseconds; 000000-999000 
     return _pad(jsdate.getMilliseconds() * 1000, 6); 
    }, 

    // Timezone 
    e: function() { // Timezone identifier; e.g. Atlantic/Azores, ... 
     // The following works, but requires inclusion of the very large 
     // timezone_abbreviations_list() function. 
     /*    return that.date_default_timezone_get(); 
     */ 
     throw 'Not supported (see source code of date() for timezone on how to add support)'; 
    }, 
    I: function() { // DST observed?; 0 or 1 
     // Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC. 
     // If they are not equal, then DST is observed. 
     var a = new Date(f.Y(), 0); 
     // Jan 1 
     var c = Date.UTC(f.Y(), 0); 
     // Jan 1 UTC 
     var b = new Date(f.Y(), 6); 
     // Jul 1 
     var d = Date.UTC(f.Y(), 6); // Jul 1 UTC 
     return ((a - c) !== (b - d)) ? 1 : 0; 
    }, 
    O: function() { // Difference to GMT in hour format; e.g. +0200 
     var tzo = jsdate.getTimezoneOffset(); 
     var a = Math.abs(tzo); 
     return (tzo > 0 ? '-' : '+') + _pad(Math.floor(a/60) * 100 + a % 60, 4); 
    }, 
    P: function() { // Difference to GMT w/colon; e.g. +02:00 
     var O = f.O(); 
     return (O.substr(0, 3) + ':' + O.substr(3, 2)); 
    }, 
    T: function() { // Timezone abbreviation; e.g. EST, MDT, ... 
     // The following works, but requires inclusion of the very 
     // large timezone_abbreviations_list() function. 
     /*    var abbr, i, os, _default; 
     if (!tal.length) { 
     tal = that.timezone_abbreviations_list(); 
     } 
     if (that.php_js && that.php_js.default_timezone) { 
     _default = that.php_js.default_timezone; 
     for (abbr in tal) { 
      for (i = 0; i < tal[abbr].length; i++) { 
      if (tal[abbr][i].timezone_id === _default) { 
       return abbr.toUpperCase(); 
      } 
      } 
     } 
     } 
     for (abbr in tal) { 
     for (i = 0; i < tal[abbr].length; i++) { 
      os = -jsdate.getTimezoneOffset() * 60; 
      if (tal[abbr][i].offset === os) { 
      return abbr.toUpperCase(); 
      } 
     } 
     } 
     */ 
     return 'UTC'; 
    }, 
    Z: function() { // Timezone offset in seconds (-43200...50400) 
     return -jsdate.getTimezoneOffset() * 60; 
    }, 

    // Full Date/Time 
    c: function() { // ISO-8601 date. 
     return 'Y-m-d\\TH:i:sP'.replace(formatChr, formatChrCb); 
    }, 
    r: function() { // RFC 2822 
     return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb); 
    }, 
    U: function() { // Seconds since UNIX epoch 
     return jsdate/1000 | 0; 
    } 
    }; 
    this.date = function(format, timestamp) { 
    that = this; 
    jsdate = (timestamp === undefined ? new Date() : // Not provided 
     (timestamp instanceof Date) ? new Date(timestamp) : // JS Date() 
     new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int) 
    ); 
    return format.replace(formatChr, formatChrCb); 
    }; 
    return this.date(format, timestamp); 
} 

Lưu ý: Php.js được cấp phép theo giấy phép MIT. Xem http://phpjs.org/about/ để biết thêm chi tiết.

0

nếu bạn không cần sự hỗ trợ đầy đủ múi giờ (chỉ múi giờ Bắc Mỹ), Tôi đã viết một rất nhanh, hoàn toàn tương thích phpdate() và phù hợp với gmdate() mà chính xác chước php dategmdate chức năng. (Bài kiểm tra đơn vị có kiểm tra mờ định dạng dấu thời gian ngẫu nhiên và so sánh với php; Tôi đã chạy vài trăm nghìn dấu thời gian trong khi thử nghiệm.) Tôi đã viết nó cho nodejs, nhưng nếu ai đó giúp, tôi sẵn sàng chuyển nó đến js tinh khiết.

Tất cả các thông số chuyển đổi được hỗ trợ; không có phụ thuộc bên ngoài.

Đánh dấu tuần và năm theo tiêu chuẩn ISO, ngày trong tuần và thông tin năm nhuận được trích xuất từ Ngày(). Thông tin múi giờ được đảo ngược thiết kế từ bù trừ UTC được cung cấp theo Ngày().

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