web-dev-qa-db-ja.com

JavaScriptの日付をフォーマットする方法

JavaScriptの日付オブジェクトを10-Aug-2010として印刷するようにフォーマットするにはどうすればよいですか?

1546
leora

重要:以下にもっと良い答えがあります。この答えは2010年に書かれ、それ以降、より新しくより良い解決策が生まれました。 OPは別の答えを受け入れるべきです。

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

Jan、Feb、Marなどを使用するように配列monthNamesを編集できます。

968
Marko

toLocaleDateString()を使う

toLocaleDateString()メソッドは、日付の日付部分を言語に応じて表した文字列を返します。ロケールとオプションの引数を使用すると、アプリケーションはフォーマット規則を使用する言語を指定でき、関数の動作をカスタマイズできます。

さまざまなキーのオプションに渡すことができる値:

  1. 日:  
    その日の表現。 
    設定可能な値は "numeric"、 "2-digit"です。
  2. 平日:  
    平日の表現です。 
    指定可能な値は "narrow"、 "short"、 "long"です。
  3. 年:  
    年を表します。 
    設定可能な値は "numeric"、 "2-digit"です。
  4. 月:  
    月の表現 
    設定可能な値は "numeric"、 "2-digit"、 "narrow"、 "short"、 "long"です。
  5. 時間:  
    時間の表現 
    設定可能な値は "numeric"、 "2-digit"です。
  6. 分: 分の表現。 
    設定可能な値は "numeric"、 "2-digit"です。
  7. 秒:  
    秒の表現です。 
    設定可能な値は "numeric"、2-digit "です。

これらのキーはすべてオプションです。要件に基づいてオプションの値の数を変更することができます。これは、各日時期間の存在も反映します。

注:コンテンツオプションを設定したいが現在のロケールを使用したい場合は、最初のパラメータにnullを渡すとエラーが発生します。代わりにundefinedを使用してください。

異なる言語の場合

  1. "en-US": 英語の場合
  2. "hi-IN": ヒンディー語
  3. "ja-JP": 日本語の場合

もっと多くの言語オプションを使うことができます。

例えば

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016

同じ目的でtoLocaleString()メソッドを使用することもできます。唯一の違いは、この関数はオプションを渡さない時間を提供することです。

// Example
9/17/2016, 1:21:34 PM

参考文献:

1346
ajeet kanojia

date.formatライブラリを使用する

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

以下を返します。

Saturday, June 9th, 2007, 5:46:21 PM 

npmの日付フォーマット

http://jsfiddle.net/phZr7/1/ /

549
RobertPitt

単純なJavaScriptを使用して日付をすばやくフォーマットする必要がある場合は、getDategetMonth + 1getFullYeargetHours、およびgetMinutesを使用します。

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

あるいは、ゼロを埋め込む必要がある場合は、

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50
391
sebastian.i

さて、私が欲しかったのは、今日の日付を2012-06-23のような MySQL friendly date文字列に変換し、その文字列を私のクエリの1つのパラメータとして使用することでした。私が見つけた簡単な解決策はこれです:

var today = new Date().toISOString().slice(0, 10);

上記の解決策はnotあなたのタイムゾーンオフセットを考慮に入れる)をしないことに留意してください。

代わりにこの関数を使うことを検討するかもしれません:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

あなたが一日の始まり/終わりの周りにこのコードを実行している場合、これはあなたに正しい日付を与えるでしょう。

325
simo

プロジェクトで すでにjQuery UI を使用している場合は、次のようにします。 

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

一緒にプレイするいくつかの日付ピッカーの日付フォーマットオプションが利用可能です ここ

164
Dmitry Pavlov

カスタムフォーマット機能:

固定フォーマットの場合は、単純な関数で機能します。次の例では、国際形式YYYY-MM-DDが生成されます。

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

OPフォーマットは次のように生成されます。

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

注意:ただし、JavaScriptの標準ライブラリを拡張するのは通常お勧めできません(たとえば、この関数をDateのプロトタイプに追加するなどして)。 

より高度な機能では、フォーマットパラメータに基づいて設定可能な出力を生成できます。

フォーマット関数を書くのが長すぎる場合は、その周りにたくさんのライブラリがあります。いくつかの他の答えはすでにそれらを列挙しています。しかし、依存関係が増えると、それも相反します。

標準のECMAScriptフォーマット関数

ECMAScriptの最近のバージョン以降、Dateクラスにはいくつかの特別なフォーマット関数があります。

toDateString :実装に依存し、日付のみを表示します。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString :ISO 8601の日付と時刻を表示します。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON :JSONの文字列。 

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString :実装に依存します。ロケール形式の日付です。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString :実装に依存します。ロケール形式の日時です。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString :実装に依存します。ロケール形式の時間です。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString :Dateに対する一般的なtoString。

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

注:これらのフォーマットからカスタム出力を生成することは可能です>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

例の抜粋:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));

157
Adrian Maire

非標準 Dateメソッドを使えばいいと思いますtoLocaleFormat(formatString)

formatString: Cの strftime() 関数で想定されているものと同じフォーマットのフォーマット文字列.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

参照:

117
Sébastien

普通のJavaScriptは、小規模の方に最適です。

一方、もっと日付が必要な場合は、 MomentJS をお勧めします。

例えば、次のとおりです。

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours
96
Mite Mitreski

最近のブラウザでは (*) で、これを実行できます。

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

今日実行された場合の出力(2016年1月24日):

'24-Jan-2016'

(*) MDNによると 、「最近のブラウザ」とはChrome 24以降、Firefox 29以降、Internet Explorer 11、Edge 12以降、およびOpera 15以降を意味します。 Safari 夜間ビルド

86
John Slegers

date.js を見てください。たとえば、あなたの場合には、日付を扱うための便利なヘルパーがたくさん追加されています。

var date = Date.parse('2010-08-10');
console.log(date.toString('dd-MMM-yyyy'));

はじめに: http://www.datejs.com/2007/11/27/getting-started-with-datejs/ /

49
NiKo

ライブラリやDateメソッドを使用せずに、正規表現を使用して、要求されたフォーマットを1行で取得できます。 

var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')

更新:@RobGが指摘したように、Date.prototype.toString()の出力は実装依存です。そのため、このソリューションを使用する場合は、慎重に使用し、必要に応じて実装に合わせて変更してください。私のテストでは、これは主要なブラウザ(Chrome、Safari、FirefoxおよびIE)がすべて同じ文字列フォーマットを返す北米で確実に機能します。

33
JD Smith

@Sébastien - 代替のすべてのブラウザサポート

new Date(parseInt(496407600)*1000).toLocaleDateString('de-DE', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
}).replace(/\./g, '/');

ドキュメンテーション: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

32
user956584

ECMAScript Edition 6(ES6/ES2015)文字列テンプレートを使用する

let d = new Date();
let formatted = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;

区切り文字を変更する必要がある場合

const delimiter = '/';
let formatted = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join(delimiter);
26
vdegenne

これが、私が取り組んでいるプロジェクトの日付フォーマットを処理するために書いたコードです。私のニーズに合うようにPHP日付フォーマット機能を模倣しています。お気軽にご利用ください。既存のDate()オブジェクトを拡張するだけです。これは最も洗練された解決策ではないかもしれませんが、それは私のニーズのために働いています。

var d = new Date(); 
d_string = d.format("m/d/Y h:i:s");

/**************************************
 * Date class extension
 * 
 */
    // Provide month names
    Date.prototype.getMonthName = function(){
        var month_names = [
                            'January',
                            'February',
                            'March',
                            'April',
                            'May',
                            'June',
                            'July',
                            'August',
                            'September',
                            'October',
                            'November',
                            'December'
                        ];

        return month_names[this.getMonth()];
    }

    // Provide month abbreviation
    Date.prototype.getMonthAbbr = function(){
        var month_abbrs = [
                            'Jan',
                            'Feb',
                            'Mar',
                            'Apr',
                            'May',
                            'Jun',
                            'Jul',
                            'Aug',
                            'Sep',
                            'Oct',
                            'Nov',
                            'Dec'
                        ];

        return month_abbrs[this.getMonth()];
    }

    // Provide full day of week name
    Date.prototype.getDayFull = function(){
        var days_full = [
                            'Sunday',
                            'Monday',
                            'Tuesday',
                            'Wednesday',
                            'Thursday',
                            'Friday',
                            'Saturday'
                        ];
        return days_full[this.getDay()];
    };

    // Provide full day of week name
    Date.prototype.getDayAbbr = function(){
        var days_abbr = [
                            'Sun',
                            'Mon',
                            'Tue',
                            'Wed',
                            'Thur',
                            'Fri',
                            'Sat'
                        ];
        return days_abbr[this.getDay()];
    };

    // Provide the day of year 1-365
    Date.prototype.getDayOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((this - onejan) / 86400000);
    };

    // Provide the day suffix (st,nd,rd,th)
    Date.prototype.getDaySuffix = function() {
        var d = this.getDate();
        var sfx = ["th","st","nd","rd"];
        var val = d%100;

        return (sfx[(val-20)%10] || sfx[val] || sfx[0]);
    };

    // Provide Week of Year
    Date.prototype.getWeekOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
    } 

    // Provide if it is a leap year or not
    Date.prototype.isLeapYear = function(){
        var yr = this.getFullYear();

        if ((parseInt(yr)%4) == 0){
            if (parseInt(yr)%100 == 0){
                if (parseInt(yr)%400 != 0){
                    return false;
                }
                if (parseInt(yr)%400 == 0){
                    return true;
                }
            }
            if (parseInt(yr)%100 != 0){
                return true;
            }
        }
        if ((parseInt(yr)%4) != 0){
            return false;
        } 
    };

    // Provide Number of Days in a given month
    Date.prototype.getMonthDayCount = function() {
        var month_day_counts = [
                                    31,
                                    this.isLeapYear() ? 29 : 28,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31
                                ];

        return month_day_counts[this.getMonth()];
    } 

    // format provided date into this.format format
    Date.prototype.format = function(dateFormat){
        // break apart format string into array of characters
        dateFormat = dateFormat.split("");

        var date = this.getDate(),
            month = this.getMonth(),
            hours = this.getHours(),
            minutes = this.getMinutes(),
            seconds = this.getSeconds();
        // get all date properties ( based on PHP date object functionality )
        var date_props = {
            d: date < 10 ? '0'+date : date,
            D: this.getDayAbbr(),
            j: this.getDate(),
            l: this.getDayFull(),
            S: this.getDaySuffix(),
            w: this.getDay(),
            z: this.getDayOfYear(),
            W: this.getWeekOfYear(),
            F: this.getMonthName(),
            m: month < 10 ? '0'+(month+1) : month+1,
            M: this.getMonthAbbr(),
            n: month+1,
            t: this.getMonthDayCount(),
            L: this.isLeapYear() ? '1' : '0',
            Y: this.getFullYear(),
            y: this.getFullYear()+''.substring(2,4),
            a: hours > 12 ? 'pm' : 'am',
            A: hours > 12 ? 'PM' : 'AM',
            g: hours % 12 > 0 ? hours % 12 : 12,
            G: hours > 0 ? hours : "12",
            h: hours % 12 > 0 ? hours % 12 : 12,
            H: hours,
            i: minutes < 10 ? '0' + minutes : minutes,
            s: seconds < 10 ? '0' + seconds : seconds           
        };

        // loop through format array of characters and add matching data else add the format character (:,/, etc.)
        var date_string = "";
        for(var i=0;i<dateFormat.length;i++){
            var f = dateFormat[i];
            if(f.match(/[a-zA-Z]/g)){
                date_string += date_props[f] ? date_props[f] : '';
            } else {
                date_string += f;
            }
        }

        return date_string;
    };
/*
 *
 * END - Date class extension
 * 
 ************************************/
17
jmiraglia

コードでjQuery UIを使用している場合は、formatDate()という組み込み関数があります。今日の日付をフォーマットするために私はこれを使っています:

var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);

jQuery UIドキュメンテーションにフォーマット日付の他の多くの例があります

15
webzy

これには多くの解決策がありますが、それらの中で最高のものはMoment.jsだと思います。だから私は個人的に日付と時刻の操作にMoment.jsを使うことを勧めます。

console.log(moment().format('DD-MMM-YYYY'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

14
Vijay Maheriya

パッケージソリューション: moment.js

すべてに合うように1つのソリューションを使用したい場合は、moment.jsを使用することを強くお勧めします。これは、多くのロケール/言語およびその他の多数の機能でのフォーマットも行います。

インストールするには:

npm install momentまたはyarn add moment(他のインストール方法についてはリンクにアクセスしてください)

例:

moment("2010-08-10").format("DD-MMM-YYYY")

収量:

2010年8月10日

手動による解決策

Moment.js、 クラスDateTimeFormatter(Java) 、および Class SimpleDateFormat(Java) のような形式を使用して、コードの読みや変更が簡単な包括的なソリューションformatDate(date, patternStr)を実装しました。日付、時刻、AM/PMなどを表示できます。その他の例についてはコードを参照してください。

例:

formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S')

formatDateは以下のコードスニペットに実装されています)

収量:

2018年10月12日、金曜日18:11:23:445

[コードを実行する]をクリックしてコードを試してください。

日付と時刻のパターン

yy = 2桁の年。 yyyy =通年

M =数字の月。 MM = 2桁の月。 MMM =短い月名。 MMMM =フル月名

EEEE =平日のフルネーム。 EEE =平日の短い名前

d =数字の日。 dd = 2桁の日

h =午前/午後。 hh = 2桁の時間午前/午後。 H = = hours; HH = 2桁の時間

m = minutes; mm = 2桁の分。 aaa = AM/PM

s = =秒。 ss = 2桁の秒

S =ミリ秒

var monthNames = [
  "January", "February", "March", "April", "May", "June", "July",
  "August", "September", "October", "November", "December"
];
var dayOfWeekNames = [
  "Sunday", "Monday", "Tuesday",
  "Wednesday", "Thursday", "Friday", "Saturday"
];
function formatDate(date, patternStr){
    if (!patternStr) {
        patternStr = 'M/d/yyyy';
    }
    var day = date.getDate(),
        month = date.getMonth(),
        year = date.getFullYear(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        second = date.getSeconds(),
        miliseconds = date.getMilliseconds(),
        h = hour % 12,
        hh = twoDigitPad(h),
        HH = twoDigitPad(hour),
        mm = twoDigitPad(minute),
        ss = twoDigitPad(second),
        aaa = hour < 12 ? 'AM' : 'PM',
        EEEE = dayOfWeekNames[date.getDay()],
        EEE = EEEE.substr(0, 3),
        dd = twoDigitPad(day),
        M = month + 1,
        MM = twoDigitPad(M),
        MMMM = monthNames[month],
        MMM = MMMM.substr(0, 3),
        yyyy = year + "",
        yy = yyyy.substr(2, 2)
    ;
    return patternStr
      .replace('hh', hh).replace('h', h)
      .replace('HH', HH).replace('H', hour)
      .replace('mm', mm).replace('m', minute)
      .replace('ss', ss).replace('s', second)
      .replace('S', miliseconds)
      .replace('dd', dd).replace('d', day)
      .replace('MMMM', MMMM).replace('MMM', MMM).replace('MM', MM).replace('M', M)
      .replace('EEEE', EEEE).replace('EEE', EEE)
      .replace('yyyy', yyyy)
      .replace('yy', yy)
      .replace('aaa', aaa)
    ;
}
function twoDigitPad(num) {
    return num < 10 ? "0" + num : num;
}
console.log(formatDate(new Date()));
console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request
console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss.S aaa'));
console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm'));
console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss.S'));
console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa'));

14
lewdev

new Date().toLocaleDateString()

// "3/21/2018"

developer.mozilla.org にさらに文書があります

13
Kirk Strobeck

外部ライブラリを使用しないJavaScriptソリューション

var now = new Date()
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
var formattedDate = now.getDate()+"-"+months[now.getMonth()]+"-"+now.getFullYear()
alert(formattedDate)
13
Prasad DLV

これは私が私のnpmプラグイン用に実装した方法です

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var Days = [
  "Sunday", "Monday", "Tuesday", "Wednesday",
  "Thursday", "Friday", "Saturday"
];

var formatDate = function(dt,format){
  format = format.replace('ss', pad(dt.getSeconds(),2));
  format = format.replace('s', dt.getSeconds());
  format = format.replace('dd', pad(dt.getDate(),2));
  format = format.replace('d', dt.getDate());
  format = format.replace('mm', pad(dt.getMinutes(),2));
  format = format.replace('m', dt.getMinutes());
  format = format.replace('MMMM', monthNames[dt.getMonth()]);
  format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
  format = format.replace('MM', pad(dt.getMonth()+1,2));
  format = format.replace(/M(?![ao])/, dt.getMonth()+1);
  format = format.replace('DD', Days[dt.getDay()]);
  format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
  format = format.replace('yyyy', dt.getFullYear());
  format = format.replace('YYYY', dt.getFullYear());
  format = format.replace('yy', (dt.getFullYear()+"").substring(2));
  format = format.replace('YY', (dt.getFullYear()+"").substring(2));
  format = format.replace('HH', pad(dt.getHours(),2));
  format = format.replace('H', dt.getHours());
  return format;
}

pad = function(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
13

JavaScriptでDateTimeをフォーマットするための便利で柔軟な方法はIntl.DateTimeFormatです。

var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));

結果は次のとおりです。"12-Oct-2017"

日付と時刻の形式は、options引数を使用してカスタマイズできます。

Intl.DateTimeFormatオブジェクトは、言語に敏感な日付と時刻のフォーマットを可能にするオブジェクトのコンストラクタです。

構文

new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])

パラメータ

ロケール

オプションです。 BCP 47言語タグを持つ文字列、またはそのような文字列の配列。 locales引数の一般的な形式と解釈につ​​いては、Intlページを参照してください。以下のUnicode拡張キーが許可されています。

nu
Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".

オプション

オプションです。以下のプロパティの一部または全部を持つオブジェクト。

localeMatcher

使用するロケールマッチングアルゴリズム。可能な値は"lookup""best fit"です。デフォルトは"best fit"です。このオプションについては、Intlページを参照してください。

タイムゾーン

使用するタイムゾーン実装が認識しなければならない唯一の値は"UTC"です。デフォルトはランタイムのデフォルトのタイムゾーンです。実装は、"Asia/Shanghai""Asia/Kolkata""America/New_York"のような、IANAタイムゾーンデータベースのタイムゾーン名を認識することもあります。

hour12

(24時間制ではなく)12時間制を使用するかどうか。可能な値はtruefalseです。デフォルトはロケールに依存します。

formatMatcher

使用するフォーマットマッチングアルゴリズム。可能な値は"basic""best fit"です。デフォルトは"best fit"です。このプロパティの使用方法については、以下の段落を参照してください。

以下のプロパティは、フォーマットされた出力で使用される日時コンポーネントとそれらの望ましい表現について説明しています。実装は、少なくとも次のサブセットをサポートするために必要です。

weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute

実装は他のサブセットをサポートするかもしれません、そして、最もマッチするものを見つけるためにすべての利用可能なサブセット表現の組み合わせに対してリクエストがネゴシエートされます。このネゴシエーションには2つのアルゴリズムが使用可能であり、formatMatcherプロパティーによって選択されます。完全に指定された"basic"アルゴリズムと、実装に依存する「最適な」アルゴリズムです。

平日

平日の表現です。可能な値は"narrow""short""long"です。

時代

時代の表現可能な値は"narrow""short""long"です。

今年の表現。可能な値は"numeric""2-digit"です。

月の表現可能な値は"numeric""2-digit""narrow""short""long"です。

その日の表現。可能な値は"numeric""2-digit"です。

時間

時間の表現可能な値は"numeric""2-digit"です。

分の表現です。可能な値は"numeric""2-digit"です。

2番目の

秒の表現です。可能な値は"numeric""2-digit"です。

timeZoneName

タイムゾーン名の表現。可能な値は"short""long"です。各日時コンポーネントプロパティのデフォルト値は未定義ですが、すべてのコンポーネントプロパティが未定義の場合、年、月、日は"numeric"と見なされます。

オンラインでチェック

詳細

11
Iman Bahrampour

_ ok _ Intl という名前のものがあります。これは、最近JavaScriptで日付をフォーマットするのに非常に便利です。

下記のようにあなたの日付:

var date = '10/8/2010';

そして、以下のようにnew Date()を使ってDateに変更します。

date = new Date(date);

そして今、以下のように locales のリストを使って好きなようにフォーマットすることができます。

date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010" 


date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010" 


date = new Intl.DateTimeFormat('ar-EG').format(date);  // Arabic date format: "٨‏/١٠‏/٢٠١٠"

あなたがまさにあなたが上で述べたフォーマットを望むならば、あなたはすることができます:

date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
var options = {year: "numeric", month: "short", day: "numeric"};
date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');

そして結果は次のようになります。

"10-Aug-2010"

ECMAScript国際化API(Intl) についての詳細は、 ここ をご覧ください。

11
Alireza
var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
8
zest

こんにちはこれはあなたの問題を解決するかどうかを確認してください。

var d = new Date();

var options = {   
    day: 'numeric',
    month: 'long', 
    year: 'numeric'
};

console.log(d.toLocaleDateString('en-ZA', options));

Date to locate format

7
Mr Nsubuga

コピー、貼り付け、採用のための非常にシンプルなES6ソリューションを探している人のために:

const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}` 

// how to use:
const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
console.log(dateToString(myDate)) // 1995-12-04

7
Hinrich

Sugar.jsには、 Date.format メソッドなど、Dateオブジェクトに対する優れた拡張機能があります。

ドキュメントからの例:

Date.create().format('{Weekday} {Month} {dd}, {yyyy}');

Date.create().format('{12hr}:{mm}{tt}')
7
hasen

これを試して:

function init(){
    var d = new Date();
    var day = d.getDate();
    var x = d.toDateString().substr(4, 3);
    var year = d.getFullYear();
    document.querySelector("#mydate").innerHTML = day + '-' + x + '-' + year;
}
window.onload = init;
<div id="mydate"></div>

4
Arjun Nayak

DateFormatter.formatDate(new Date(2010,7,10), 'DD-MMM-YYYY')

=> 10-Aug-2010

DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')

=> 2017-11-22 19:52:37

DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A')

=> 2 02 Wed Wednesday, 2 02 Feb February, 05 2005, 3 03 3 03, 4 04, 5 05, am AM

var DateFormatter = {
  monthNames: [
    "January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ],
  dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  formatDate: function (date, format) {
    var self = this;
    format = self.getProperDigits(format, /d+/gi, date.getDate());
    format = self.getProperDigits(format, /M+/g, date.getMonth() + 1);
    format = format.replace(/y+/gi, function (y) {
      var len = y.length;
      var year = date.getFullYear();
      if (len == 2)
        return (year + "").slice(-2);
      else if (len == 4)
        return year;
      return y;
    })
    format = self.getProperDigits(format, /H+/g, date.getHours());
    format = self.getProperDigits(format, /h+/g, self.getHours12(date.getHours()));
    format = self.getProperDigits(format, /m+/g, date.getMinutes());
    format = self.getProperDigits(format, /s+/gi, date.getSeconds());
    format = format.replace(/a/ig, function (a) {
      var amPm = self.getAmPm(date.getHours())
      if (a === 'A')
        return amPm.toUpperCase();
      return amPm;
    })
    format = self.getFullOr3Letters(format, /d+/gi, self.dayNames, date.getDay())
    format = self.getFullOr3Letters(format, /M+/g, self.monthNames, date.getMonth())
    return format;
  },
  getProperDigits: function (format, regex, value) {
    return format.replace(regex, function (m) {
      var length = m.length;
      if (length == 1)
        return value;
      else if (length == 2)
        return ('0' + value).slice(-2);
      return m;
    })
  },
  getHours12: function (hours) {
    // https://stackoverflow.com/questions/10556879/changing-the-1-24-hour-to-1-12-hour-for-the-gethours-method
    return (hours + 24) % 12 || 12;
  },
  getAmPm: function (hours) {
    // https://stackoverflow.com/questions/8888491/how-do-you-display-javascript-datetime-in-12-hour-am-pm-format
    return hours >= 12 ? 'pm' : 'am';
  },
  getFullOr3Letters: function (format, regex, nameArray, value) {
    return format.replace(regex, function (s) {
      var len = s.length;
      if (len == 3)
        return nameArray[value].substr(0, 3);
      else if (len == 4)
        return nameArray[value];
      return s;
    })
  }
}

console.log(DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'));
console.log(DateFormatter.formatDate(new Date(), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));
console.log(DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));

フォーマット記述は Ionic Framework でした(Z、UTCタイムゾーンオフセットはサポートしていません)

徹底的にテストされていません

3
amit77309

JavaScriptの数値、日付、JSONの日付のローカライズされたフォーマット用の新しいライブラリ smarti.to.js があります(MicrosoftまたはISO 8601)。

例:

new Date('2015-1-1').to('dd.MM.yy')         // Outputs 01.01.2015
"2015-01-01T10:11:12.123Z".to('dd.MM.yy')   // Outputs 01.01.2015

ローカライゼーションファイル(smarti.to。{culture} .js)で定義されているカスタムの短いパターンもあります。例(smarti.to.et-EE.js):

new Date('2015-1-1').to('d')                // Outputs 1.01.2015

そしてマルチフォーマット能力:

smarti.format('{0:n2} + {1:n2} = {2:n2}', 1, 2, 3)   // Output: 1,00 + 2,00 = 3,00
3
Gene R

JD Smith の素晴らしい正規表現ソリューションに触発されて、私は突然この頭を分割するという考えを思いついた。

var D = Date().toString().split(" ");
document.getElementById("demo").innerHTML = D[2] + "-" + D[1] + "-" + D[3];
3
Dave

あなたが短い、人間が読める、機能を好むなら - これはあなたに合うように簡単に調整可能です。

timeStamp パラメータは1970年からのミリ秒です - それはnew Date().getTime()と他の多くのデバイスによって返されます...

はい、気が変わりました。私はゼロ詰め物のための特別な機能を含めました。呪い!

 function zeroPad(aNumber) {
     return ("0"+aNumber).slice(-2);
 }
 function humanTime(timeStamp) {
    var M = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var D = new Date(timeStamp); // 23 Aug 2016 16:45:59 <-- Desired format.
    return D.getDate() + " " + M[D.getMonth()] + " " + D.getFullYear() + " " + D.getHours() + ":" + zeroPad(d.getMinutes()) + ":" + zeroPad(D.getSeconds());
 }
3
Dave

jQuery UI プラグインをあなたのページに追加してください:

function DateFormate(dateFormate, datetime) {
    return $.datepicker.formatDate(dateFormate, datetime);
};
3
Thulasiram

私は以下を使います。それは簡単で、うまくいきます。

 var dtFormat = require('dtformat');
   var today = new Date();
   dtFormat(today, "dddd, mmmm dS, yyyy, h:MM:ss TT");

またはこれ:

var now = new Date()
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
var formattedDate = now.getDate()  + "-" + months[now.getMonth()] + "-" + now.getFullYear()
alert(formattedDate)
2
SaidB

これはあなたが望むものを正確に実行するスクリプトです。

https://github.com/UziTech/js-date-format

var d = new Date("2010-8-10");
document.write(d.format("DD-MMM-YYYY"));
2
Tony Brix

日付をフォーマットできる以外の方法

function formatDate(dDate,sMode){   
    var today = dDate;
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    if(dd<10) {
        dd = '0'+dd
    } 
    if(mm<10) {
        mm = '0'+mm
    } 
    if (sMode+""==""){
        sMode = "dd/mm/yyyy";
    }
    if (sMode == "yyyy-mm-dd"){
        return  yyyy + "-" + mm + "-" + dd + "";
    }
    if (sMode == "dd/mm/yyyy"){
        return  dd + "/" + mm + "/" + yyyy;
    }
}
2
Matias Osmerini

プロジェクトで 既にExtJS を使用している場合は、 Ext.Date を使用できます。 

var date = new Date();
Ext.Date.format(date, "d-M-Y");

以下を返します。

"11-Nov-2015"
2
Peter

私は将来の参考のためにここに投稿し、コピーして貼り付ける準備ができました。これは3文字の月と2桁の年を持つように修正された主な答えです:

function formatDate(date) {
    var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var day = date.getDate(), monthIndex = date.getMonth(), year = date.getFullYear().toString().substr(-2);
    return day + ' ' + monthNames[monthIndex] + ' ' + year;
}
    
document.write(formatDate(new Date())); 

2
Basj

誰かがこれは愚かな解決策であると言うかもしれませんが、それは日付から不要な情報を削除するトリックをしません。

yourDateObjectは以下を生成します。

2017年12月13日水曜日20:40:40 GMT + 0200(EET)

yourDateObject.toString().slice(0, 15);は以下を生成します。

2017年12月13日水曜日

1
Combine

次のコードでは、日付をDD-MM-YYYY(27-12-2017)またはDD MMM YYYY(2017年12月27日)のいずれかにフォーマットできます。

/** Pad number to fit into nearest power of 10 */
function padNumber(number, prependChar, count) {
  var out = '' + number; var i;
  if (number < Math.pow(10, count))
    while (out.length < ('' + Math.pow(10, count)).length) out = prependChar + out;

  return out;
}

/* Format the date to 'DD-MM-YYYY' or 'DD MMM YYYY' */
function dateToDMY(date, useNumbersOnly) {
  var months = [
    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 
    'Nov', 'Dec'
  ];

  return '' + padNumber(date.getDate(), '0', 1) + 
   (useNumbersOnly? '-' + padNumber(date.getMonth() + 1, '0', 1) + '-' : ' ' + months[date.getMonth()] + ' ')
    + date.getFullYear();
}

date.getFullYear()padNumber(date.getDate(), '0', 1)の順序を変更してdateToYMD()関数を作ります。

詳細は repl.itの例 を参照してください。

1
Agi Hammerthief

短く、広く互換性のある方法

function formatDate(date) {
    date.toISOString()
    .replace(/^(\d+)-(\d+)-(\d+).*$/, // Only extract Y-M-D
        function (a,y,m,d) {
            return [
                d, // Day
                ['Jan','Feb','Mar','Apr','May','Jun',  // Month Names
                'Jul','Ago','Sep','Oct','Nov','Dec']
                [m-1], // Month
                y  // Year
            ].join('-') // Stitch together
        })
}

または、単一行として:

date.toISOString().replace(/^(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+).(\d+)Z$/, function (a,y,m,d) {return [d,['Jan','Feb','Mar','Apr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'][m-1],y].join('-')})
1
JP de la Torre

2.39KB縮小しました。 1ファイル https://github.com/rhroyston/clock-js

2010年8月10日は以下のようになります。

var str = clock.month
str.charAt(0).toUpperCase() + str.slice(1,3); //gets you "Aug"
console.log(clock.day + '-' + str + '-' + clock.year); //gets you 10-Aug-2010



1
Ron Royston

この モジュール はほとんどの場合に簡単に扱えます。 Locutusによる、より大きなnpmパッケージの一部で、さまざまな機能が含まれていますが、パッケージ自体とは完全に独立して使用できます。npmを使用しない場合はコピー/貼り付けを少しだけ行ってください関数)

2番目のパラメータとして、Date.getTime()など、どこからでも来ることができるタイムスタンプを受け入れます。

また、Locutusはより大きなdatetimeモジュールを保守しています。これもlocutusパッケージの中にあり、それを使うとよりオブジェクト指向のものになります。

ここ あなたは他のdatetime関数をモジュールとして見ることができ、それもとても便利であることが証明されています。

パラメータとフォーマット文字列に関するドキュメントを見つけることができます ここ (docサイトはphpサイトですが、locutusの実装はまったく同じ仕様に従っています)

date Moduleの例

date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400)//'07:09:40 m is month'

date('F j, Y, g:i a', 1062462400)//'September 2, 2003, 12:26 am'

date('Y W o', 1062462400)//'2003 36 2003'

var $x = date('Y m d', (new Date()).getTime() / 1000) $x = $x + '' var $result = $x.length // 2009 01 09    10

date('W', 1104534000)   //'52'

date('B t', 1104534000) //'999 31'

date('W U', 1293750000.82); // 2010-12-31   '52 1293750000'

date('W', 1293836400); // 2011-01-01    '52'

date('W Y-m-d', 1293974054); // 2011-01-02  '52 2011-01-02'
0

「2010年8月10日」を入手するには:

var date = new Date('2010-08-10 00:00:00');
date = date.toLocaleDateString(undefined, {day:'2-digit'}) + '-' + date.toLocaleDateString(undefined, {month:'short'}) + '-' + date.toLocaleDateString(undefined, {year:'numeric'})

ブラウザのサポートについては toLocaleDateString を参照してください。

0
site

日付、日付+時刻、または単に時刻を返すことができる単純な関数です。

var myDate =  dateFormatter( "2019-01-24 11:33:24", "date-time" ); 
// >> RETURNS "January 24, 2019 11:33:24"

var myDate2 = dateFormatter( "2019-01-24 11:33:24", "date" );  
// >> RETURNS "January 24, 2019"

var myDate3 = dateFormatter( "2019-01-24 11:33:24", "time" ); 
// >> RETURNS "11:33:24"


function dateFormatter( strDate, format ){
    var theDate = new Date(strDate);
    if( format=="time" )
       return getTimeFromDate(theDate);
    else{
       var dateOptions = {year:'numeric', month:'long', day:'numeric'};
       var formattedDate = theDate.toLocaleDateString("en-US", + dateOptions);
       if( format=="date" )
           return formattedDate;
       return formattedDate + " " + getTimeFromDate(theDate);
    }
}

function getTimeFromDate( theDate ){
    var sec = theDate.getSeconds();
    if( sec<10 )
        sec = "0"+sec;
    var min = theDate.getMinutes();
    if( min<10 )
        min = "0"+min;
    return theDate.getHours() + ':'+ min + ':' + sec;
}

0
blairzotron

このライブラリは日付オブジェクトをフォーマットし、フォーマットされた文字列を解析して日付オブジェクトに戻すことができます。 Javaフォーマット(SimpleDateFormatクラス)を使用しています。月と日の名前はローカライズすることができます。

http://www.javascriptsource.com/repository/javascripts/2009/03/880961/JS_Simple_Date_Format.Zip

例:

var sdf = new JsSimpleDateFormat("dd-MMM-yyyy");
var formattedString = sdf.format(new Date());
var dateObject = sdf.parse("10-Aug-2010");
0
John

これは、外部モジュール/ライブラリに依存せず、jQueryやES7などを使用しない、すぐに貼り付けられる時刻/日付フォーマットコードです。他のいくつかの回答のコードとは異なり、このコードは次の機能の組み合わせを提供します。

  • 入力としてJavaScript Dateオブジェクトを受け取ります
  • ローカルタイムゾーンまたはUTCとして日付を表示できます
  • 常にドキュメントに戻らなければならない典型的な「%D%m%-」とは異なり、コードを記述した後でも読みやすく理解しやすいシンプルなフォーマットシステム「{year4} {month02} {second}」を使用します。
  • フォーマットシステムには、アドホックな「DD MM YYYY」システムのような奇妙な自己衝突はありません。
  • ここでテストを実行して試すことができます
// format_date(date, pattern, utc)
// - date 
//   - a JavaScript Date object
//   - use "new Date()" for current time
// - pattern
//   - a string with embedded {codes} like
//     "{year4}-{month02}-{day02}: {dayname3}"
//     see format_date_funcs below for complete list
//   - any other letters go through unchanged
// - utc
//   - if true, shows date in UTC time "zone"
//   - if false/omitted, shows date in local time zone
//
var month_names = 
[
  "January", "February", "March", "April", "May", "June", "July",
  "August", "September", "October", "November", "December"
];
var day_of_week_names = 
[
  "Sunday", "Monday", "Tuesday",
  "Wednesday", "Thursday", "Friday", "Saturday"
];
function space_pad2(num)
{
    return num < 10 ? " " + num : num;
}
function zero_pad2(num)
{
    return num < 10 ? "0" + num : num;
}
function space_pad3(num)
{
    if (num < 10) 
        return "  " + num;
    else if (num < 100)
        return " " + num;
    else
        return num;
}
function zero_pad3(num)
{
    if (num < 10) 
        return "00" + num;
    else if (num < 100)
        return "0" + num;
    else
        return num;
}
var format_date_funcs =
{
    // {year4}  = '1902'
    // {year02} =   '02'
    // 
    'year4': function(date, utc)
    {
        var year = utc ? date.getUTCFullYear() : date.getFullYear();
        return year;
    },
    'year02': function(date, utc)
    {
        var year = utc ? date.getUTCFullYear() : date.getFullYear();
        return year.toString().substr(2,2);
    },
    // {month}   =  '1' - '12'
    // {month2}  = ' 1' - '12' (space padded)
    // {month02} = '01' - '12'
    //
    'month': function(date, utc)
    {
        var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
        return            month + 1;
    },
    'month2': function(date, utc)
    {
        var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
        return space_pad2(month + 1);
    },
    'month02': function(date, utc)
    {
        var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
        return zero_pad2(month + 1);
    },
    // {monthname}  = 'January'
    // {monthname3} = 'Jan'
    // 
    'monthname': function(date, utc)
    {
        var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
        return month_names[month];
    },
    'monthname3': function(date, utc)
    {
        var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
        return month_names[month].substr(0, 3);
    },
    // {day}   =  '1' - '31'
    // {day2}  = ' 1' - '31' (space padded)
    // {day02} = '01' - '31'
    // 
    'day': function(date, utc)
    {
        var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
        return date;
    },
    'day2': function(date, utc)
    {
        var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
        return space_pad2(date);
    },
    'day02': function(date, utc)
    {
        var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
        return zero_pad2(date);
    },
    // {dayname}  = 'Tuesday'
    // {dayname3} = 'Tue'
    // 
    'dayname': function(date, utc)
    {
        var day = utc ? date.getUTCDay() : date.getDay(); // [0,6]
        return day_of_week_names[day];
    },
    'dayname3': function(date, utc)
    {
        var day = utc ? date.getUTCDay() : date.getDay(); // [0,6]
        return day_of_week_names[day].substr(0,3);
    },
    // {24hour}   =  '0' - '23'
    // {24hour2}  = ' 0' - '23' (space padded)
    // {24hour02} = '00' - '23'
    //
    '24hour': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        return hour;
    },
    '24hour2': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        return space_pad2(hour);
    },
    '24hour02': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        return zero_pad2(hour);
    },
    // {12hour}   =  '1' - '12'
    // {12hour2}  = ' 1' - '12' (space padded)
    // {12hour02} = '01' - '12'
    // {ampm}     = 'am' or 'pm'
    // {AMPM}     = 'AM' or 'PM'
    //
    '12hour': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        hour = hour % 12; // [0,11]
        if (0 === hour) hour = 12;
        return hour;
    },
    '12hour2': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        hour = hour % 12; // [0,11]
        if (0 === hour) hour = 12;
        return space_pad2(hour);
    },
    '12hour02': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        hour = hour % 12; // [0,11]
        if (0 === hour) hour = 12;
        return zero_pad2(hour);
    },
    'ampm': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        return (hour < 12 ? 'am' : 'pm');
    },
    'AMPM': function(date, utc)
    {
        var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
        return (hour < 12 ? 'AM' : 'PM');
    },
    // {minute}   =  '0' - '59'
    // {minute2}  = ' 0' - '59' (space padded)
    // {minute02} = '00' - '59'
    // 
    'minute': function(date, utc)
    {
        var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
        return minute;
    },
    'minute2': function(date, utc)
    {
        var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
        return space_pad2(minute);
    },
    'minute02': function(date, utc)
    {
        var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
        return zero_pad2(minute);
    },
    // {second}   =  '0' - '59'
    // {second2}  = ' 0' - '59' (space padded)
    // {second02} = '00' - '59'
    // 
    'second': function(date, utc)
    {
        var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
        return second;
    },
    'second2': function(date, utc)
    {
        var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
        return space_pad2(second);
    },
    'second02': function(date, utc)
    {
        var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
        return zero_pad2(second);
    },
    // {msec}   =   '0' - '999'
    // {msec3}  = '  0' - '999' (space padded)
    // {msec03} = '000' - '999'
    // 
    'msec': function(date, utc)
    {
        var msec = 
            utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
        return msec;
    },
    'msec3': function(date, utc)
    {
        var msec = 
            utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
        return space_pad3(msec);
    },
    'msec03': function(date, utc)
    {
        var msec = 
            utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
        return zero_pad3(msec);
    },
    // {open} = '{' (in case you actually want '{' in the output)
    //
    'open': function(date, utc)
    {
        return '{';
    }, 
    // {close} = '}' (in case you actually want '}' in the output)
    //
    'close': function(date, utc)
    {
        return '}';
    }, 
};
function format_date(date, pattern, utc)
{
    if (!pattern) 
    {
        pattern = '{month}/{day}/{year4}';
    }

    var ret = '';

    while (pattern.length > 0)
    {
        var s = pattern.indexOf('{');
        var e = pattern.indexOf('}');
        //console.log('s ' + s + ' e ' + e);
        if (-1 !== s && -1 !== e && s < e)
        {
            // - there is a well-formed {foo} in range [s,e]
            // - first we emit range [0,s) as literal
        }
        else
        {
            // - rest of string has no {} or has malformed }{ or { or }
            // - just emit the rest of the string as literal and be done
            s = pattern.length; 
        }
        // emit range [0,s) as literal
        if (s > 0)
        {
            ret += pattern.substr(0, s);
            pattern = pattern.substr(s);
            e -= s;
            s = 0;
        }

        if (0 === pattern.length) break;

        // emit range [s=0,e] by evaluating code
        console.assert(0 === s); // position of {
        console.assert(e > 0);  // position of }
        console.assert('{' === pattern.substr(s, 1));
        console.assert('}' === pattern.substr(e, 1));
        var code = pattern.substr(1,e-1);
        var func = format_date_funcs[code];
        console.assert(func);
        ret += func(date, utc);

        pattern = pattern.substr(e+1);
    }

    return ret;
}

if (1) // test format_date
{
    var fmt = '[';
    for (var func in format_date_funcs) 
    {
        if (!format_date_funcs.hasOwnProperty(func)) continue;
        fmt += '{' + func + '}/';
    }
    fmt += ']';
    var now = new Date();
    console.log(fmt);
    console.log(format_date(now, fmt, false /*utc*/));
    console.log(format_date(now, fmt, true /*utc*/));
}
0
Louis Semprini

ライブラリは必要ありません。日付コンポーネントを抽出して文字列を作成するだけです。 YYYY-MM-DDフォーマットを取得する方法は次のとおりです。月インデックス「1月は0、2月は1など」にも注意してください。

// @flow

type Components = {
  day: number,
  month: number,
  year: number
}

export default class DateFormatter {
  // YYYY-MM-DD
  static YYYY_MM_DD = (date: Date): string => {
    const components = DateFormatter.format(DateFormatter.components(date))
    return `${components.year}-${components.month}-${components.day}`
  }

  static format = (components: Components) => {
    return {
      day: `${components.day}`.padStart(2, '0'),
      month: `${components.month}`.padStart(2, '0'),
      year: components.year
    }
  }

  static components = (date: Date) => {
    return {
      day: date.getDate(),
      month: date.getMonth() + 1,
      year: date.getFullYear()
    }
  }
}
0
onmyway133

つかいます:

thisDate = new Date(parseInt(jsonDateString.replace('/Date(', '')));
formattedDate = (thisDate.getMonth() + 1) + "/" + (thisDate.getDate()+1) + "/" + thisDate.getFullYear();

これは _ json _ date、 "/ Date(1429573751663)/"を取り、フォーマットされた文字列として生成します。

"4/21/2015"

0
pat capozzi