JavaScriptの日付オブジェクトを10-Aug-2010
として印刷するようにフォーマットするにはどうすればよいですか?
重要:以下にもっと良い答えがあります。この答えは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
を編集できます。
toLocaleDateString()
を使うtoLocaleDateString()
メソッドは、日付の日付部分を言語に応じて表した文字列を返します。ロケールとオプションの引数を使用すると、アプリケーションはフォーマット規則を使用する言語を指定でき、関数の動作をカスタマイズできます。
これらのキーはすべてオプションです。要件に基づいてオプションの値の数を変更することができます。これは、各日時期間の存在も反映します。
注:コンテンツオプションを設定したいが現在のロケールを使用したい場合は、最初のパラメータにnull
を渡すとエラーが発生します。代わりにundefined
を使用してください。
もっと多くの言語オプションを使うことができます。
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
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
単純なJavaScriptを使用して日付をすばやくフォーマットする必要がある場合は、getDate
、getMonth + 1
、getFullYear
、getHours
、および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
さて、私が欲しかったのは、今日の日付を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);
}
あなたが一日の始まり/終わりの周りにこのコードを実行している場合、これはあなたに正しい日付を与えるでしょう。
プロジェクトで すでにjQuery UI を使用している場合は、次のようにします。
var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));
// formatted will be 'Jul 8, 2014'
一緒にプレイするいくつかの日付ピッカーの日付フォーマットオプションが利用可能です ここ 。
固定フォーマットの場合は、単純な関数で機能します。次の例では、国際形式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の最近のバージョン以降、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));
非標準 Dateメソッドを使えばいいと思いますtoLocaleFormat(formatString)
formatString: Cの strftime()
関数で想定されているものと同じフォーマットのフォーマット文字列.
var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011
参照:
普通の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
最近のブラウザでは (*) で、これを実行できます。
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 夜間ビルド 。
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/ /
ライブラリや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)がすべて同じ文字列フォーマットを返す北米で確実に機能します。
@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
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);
これが、私が取り組んでいるプロジェクトの日付フォーマットを処理するために書いたコードです。私のニーズに合うように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
*
************************************/
コードでjQuery UIを使用している場合は、formatDate()
という組み込み関数があります。今日の日付をフォーマットするために私はこれを使っています:
var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);
これには多くの解決策がありますが、それらの中で最高のものは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>
パッケージソリューション: 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'));
new Date().toLocaleDateString()
// "3/21/2018"
developer.mozilla.org にさらに文書があります
外部ライブラリを使用しない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)
これは私が私の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;
}
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時間制を使用するかどうか。可能な値はtrue
とfalse
です。デフォルトはロケールに依存します。
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"
と見なされます。
_ 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) についての詳細は、 ここ をご覧ください。
var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
コピー、貼り付け、採用のための非常にシンプルな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
Sugar.jsには、 Date.format メソッドなど、Dateオブジェクトに対する優れた拡張機能があります。
ドキュメントからの例:
Date.create().format('{Weekday} {Month} {dd}, {yyyy}');
Date.create().format('{12hr}:{mm}{tt}')
これを試して:
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>
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タイムゾーンオフセットはサポートしていません)
徹底的にテストされていません
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
JD Smith の素晴らしい正規表現ソリューションに触発されて、私は突然この頭を分割するという考えを思いついた。
var D = Date().toString().split(" ");
document.getElementById("demo").innerHTML = D[2] + "-" + D[1] + "-" + D[3];
あなたが短い、人間が読める、機能を好むなら - これはあなたに合うように簡単に調整可能です。
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());
}
jQuery UI プラグインをあなたのページに追加してください:
function DateFormate(dateFormate, datetime) {
return $.datepicker.formatDate(dateFormate, datetime);
};
私は以下を使います。それは簡単で、うまくいきます。
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)
これはあなたが望むものを正確に実行するスクリプトです。
https://github.com/UziTech/js-date-format
var d = new Date("2010-8-10");
document.write(d.format("DD-MMM-YYYY"));
日付をフォーマットできる以外の方法
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;
}
}
プロジェクトで 既にExtJS を使用している場合は、 Ext.Date を使用できます。
var date = new Date();
Ext.Date.format(date, "d-M-Y");
以下を返します。
"11-Nov-2015"
私は将来の参考のためにここに投稿し、コピーして貼り付ける準備ができました。これは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()));
誰かがこれは愚かな解決策であると言うかもしれませんが、それは日付から不要な情報を削除するトリックをしません。
yourDateObject
は以下を生成します。
2017年12月13日水曜日20:40:40 GMT + 0200(EET)
yourDateObject.toString().slice(0, 15);
は以下を生成します。
2017年12月13日水曜日
次のコードでは、日付を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の例 を参照してください。
短く、広く互換性のある方法
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('-')})
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
この モジュール はほとんどの場合に簡単に扱えます。 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'
「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 を参照してください。
日付、日付+時刻、または単に時刻を返すことができる単純な関数です。
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;
}
このライブラリは日付オブジェクトをフォーマットし、フォーマットされた文字列を解析して日付オブジェクトに戻すことができます。 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");
これは、外部モジュール/ライブラリに依存せず、jQueryやES7などを使用しない、すぐに貼り付けられる時刻/日付フォーマットコードです。他のいくつかの回答のコードとは異なり、このコードは次の機能の組み合わせを提供します。
// 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*/));
}
ライブラリは必要ありません。日付コンポーネントを抽出して文字列を作成するだけです。 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()
}
}
}
つかいます:
thisDate = new Date(parseInt(jsonDateString.replace('/Date(', '')));
formattedDate = (thisDate.getMonth() + 1) + "/" + (thisDate.getDate()+1) + "/" + thisDate.getFullYear();
これは _ json _ date、 "/ Date(1429573751663)/"を取り、フォーマットされた文字列として生成します。
"4/21/2015"