私はJavascriptについてあまり知りません。また、私が見つけた他の質問は、必要な情報を取得するだけでなく、日付の操作に関連しています。
以下の形式で日付を取得したい:
2011年1月27日木曜日17:42:21に印刷
これまでのところ、私は次のものを得ました:
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
h = checkTime(h);
m = checkTime(m);
s = checkTime(s);
var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;
曜日と月(名前)を取得する方法を知る必要があります。
それを作る簡単な方法はありますか、またはnow.getMonth()
とnow.getDay()
を使用して正しい値に単純にインデックスを付ける配列を使用することを検討しますか?
はい、配列が必要です。
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var day = days[ now.getDay() ];
var month = months[ now.getMonth() ];
または、 date.js ライブラリを使用できます。
編集:
これらを頻繁に使用する場合は、Date.prototype
を拡張してアクセシビリティを高めることができます。
(function() {
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
Date.prototype.getMonthName = function() {
return months[ this.getMonth() ];
};
Date.prototype.getDayName = function() {
return days[ this.getDay() ];
};
})();
var now = new Date();
var day = now.getDayName();
var month = now.getMonthName();
標準のjavascript Dateクラスを使用します。 配列は不要です。追加のライブラリは必要ありません。
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };
var prnDt = 'Printed on ' + new Date().toLocaleTimeString('en-us', options);
console.log(prnDt);
また、できることの1つは、日付オブジェクトを拡張して平日を返すことです。
Date.prototype.getWeekDay = function() {
var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
return weekday[this.getDay()];
}
したがって、呼び出すことができるのはdate.getWeekDay();のみです。
残念ながら、javascriptのDate
オブジェクトは、数値形式でのみ月に関する情報を返します。より高速にできるのは、月の配列を作成し(頻繁に変更されることはありません!)、数に基づいて名前を返す関数を作成することです。
このようなもの:
function getMonthNameByMonthNumber(mm) {
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
return months[mm];
}
したがって、コードは次のようになります。
var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+ now.getFullYear() + " at " + h + ":" + m + ":" s;
var GetWeekDays = function (format) {
var weekDays = {};
var curDate = new Date();
for (var i = 0; i < 7; ++i) {
weekDays[curDate.getDay()] = curDate.toLocaleDateString('ru-RU', {
weekday: format ? format : 'short'
});
curDate.setDate(curDate.getDate() + 1);
}
return weekDays;
};
me.GetMonthNames = function (format) {
var monthNames = {};
var curDate = new Date();
for (var i = 0; i < 12; ++i) {
monthNames[curDate.getMonth()] = curDate.toLocaleDateString('ru-RU', {
month: format ? format : 'long'
});
curDate.setMonth(curDate.getMonth() + 1);
}
return monthNames;
};
http://phrogz.net/JS/FormatDateTime_JS.txt を使用すると、次のことができます。
var now = new Date;
var prnDt = now.customFormat( "Printed on #DDDD#, #D# #MMMM# #YYYY# at #hhh#:#mm#:#ss#" );
たとえば、ローカライズされた日付出力を解析する datejs を見ることができます。
あなたの例では、フォーマットは次のようになります。
new Date().toString('dddd, d MMMM yyyy at HH:mm:ss')
簡単です。 toLocaleDateString()で曜日のみを表示して名前を取得するオプションを設定できます。例えば:
(new Date())。toLocaleDateString( 'en-US'、{weekday: 'long'})は、曜日のみを返します。そして(new Date())。toLocaleDateString( 'en-US'、{month: 'long'})は年の月のみを返します。
toLocaleDateString()メソッドは、この日付の日付部分の言語依存表現を含む文字列を返します。新しいロケールとオプションの引数により、アプリケーションはフォーマット規則を使用する言語を指定し、関数の動作をカスタマイズできます。ロケールとオプション引数を無視する古い実装では、使用されるロケールと返される文字列の形式は完全に実装に依存します。
長い形式:
const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));
一発ギャグ:
console.log(new Date().toLocaleDateString('en-US', { weekday: 'long' }));
注:ロケールには他の言語オプションもありますが、ここではアメリカ英語用に提示されているものがあります
function currentDate() {
var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
"JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];
var today = new Date();
var dd = today.getDate();
var mm = monthNames[today.getMonth()];
var yyyy = today.getFullYear();
var day = days[today.getDay()];
today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
document.write(today +"<br>");
document.write('Day is : ' + day );
}
currentDate();