現在、秒を表示せずにユーザーの時間を表示しようとしています。 Javascriptの.toLocaleTimeString()を使用してこれを行う方法はありますか?
このようなことをする:
var date = new Date();
var string = date.toLocaleTimeString();
すべてのユニットでユーザーの時間を表示します。現在、午後3時39分15秒と表示されます。秒なしで、同じ文字列を表示できますか? (例:午後3時39分)
これに基づいてオプションをいつでも設定できます page 設定して、秒を取り除くために
var dateWithouthSecond = new Date();
dateWithouthSecond.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
Firefox、Chrome、IE9 +およびOperaでサポートされています。 Webブラウザコンソールで試してください。
Date.prototype.toLocaleString によって返される値は実装に依存するため、取得したものを取得します。文字列を解析して秒を削除することもできますが、ブラウザによって異なる場合があるため、使用中のすべてのブラウザを許可する必要があります。
Dateメソッドを使用して、独自の明確な形式を作成することは難しくありません。例えば:
function formatTimeHHMMA(d) {
function z(n){return (n<10?'0':'')+n}
var h = d.getHours();
return (h%12 || 12) + ':' + z(d.getMinutes()) + ' ' + (h<12? 'AM' :'PM');
}
また、この問題の解決策を探していましたが、最終的には次のように思いつきました。
function getTimeStr() {
var dt = new Date();
var d = dt.toLocaleDateString();
var t = dt.toLocaleTimeString();
t = t.replace(/\u200E/g, '');
t = t.replace(/^([^\d]*\d{1,2}:\d{1,2}):\d{1,2}([^\d]*)$/, '$1$2');
var result = d + ' ' + t;
return result;
}
ここで試すことができます: http://jsfiddle.net/B5Zrx/
\ u200Eは、いくつかのIEバージョンで見たフォーマット文字です(ユニコードの左から右のマークです)。
フォーマットされた時刻に「XX:XX:XX」のようなものが含まれている場合、秒の時刻でなければならず、最後の部分を削除します。このパターンが見つからない場合、何も変更されません。非常に安全ですが、奇妙な状況で数秒を残すリスクがあります。
フォーマットされた時間部分の順序を変更するロケールが存在しないことを願っています(例:ss:mm:hhにします)。この左から右へのマークは私を少し緊張させていますが、それが私が右から左へのマーク(\ u202E)を削除しない理由です-この場合、一致するものを見つけず、そのような場合は秒でフォーマットされた時間。
これを試すことができます。これは私のニーズに合っています。
var d = new Date();
d.toLocaleTimeString().replace(/:\d{2}\s/,' ');
または
d.toLocaleString().replace(/:\d{2}\s/,' ');
ロケールの場合:
var date = new Date();
date.toLocaleTimeString('fr-FR', {hour: '2-digit', minute: '2-digit'})