2017-10-13 6 views
0

言語を表す文字列(任意に国別情報)がある場合、その時間を12Hまたは24Hとして表示する必要があるかどうかをどのように知ることができますか?例えばAngular Localeから時刻形式(12/24)に関する情報を取得する方法は?

私はどちらか一方を使用する必要がある場合だけ見つける、特定の形式で時刻を表示するために、パイプを使用したくない

is12HFormat('en_EN') // returns true 
is12HFormat('es_ES') // returns false 

注意。

EDIT

現在使用しては:

private guessIf12HTimeFormat(language: string): boolean { 
    const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0)); 
    const dateString = date.toLocaleTimeString(language); 
    return (!!dateString.match(/am|pm/i) || !!date.toString().match(/am|pm/i)); 
    } 

答えて

0

あなたはバニラはJavaScriptを使用してそれを達成することができます。ここに例があります。 hour12設定

ここ

var date = new Date();

:真は12時間形式として来る

date.toLocaleString('en-US', {hour12: true})

enter image description here

+0

あなたの例では、いくつかの定義済みのハードコード変数でcountryInfoを比較することで動作します。私が望むのは、言語を受け取って、12Hが期待されるフォーマットなら真を返し、24Hなら偽を返す関数です。 私が言ったように、それを使用して時間文字列をフォーマットすることに興味はありません。 – marsop

1

はhour12オプション https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString

注を参照してください。

時間12:12時間(24時間ではなく)を使用するかどうか。可能な値はtrueとfalseです。 デフォルトはロケール依存です。

あなたが達成しようとしていることに応じて、「国際化を強力にサポートする」moment.jsもチェックすることをお勧めします。

おそらく:

var format = new Intl.DateTimeFormat('es-ES'); 
var usedOptions = format.resolvedOptions(); 
var use24 = !usedOptions.hour12; 
+0

私はこれをテストしていませんが、** hour12オプションを指定していない場合は、ロケールに基づいたフォーマットで動作するかどうかは分かりません。 – Billy

+0

だから、解決策はロケールを指定するが、hour12オプションを指定するのではなく、Date.prototypeが使用されているものを推測するために解析するダミーの時間を生成することでしょうか? - むしろ関与すると思うけど、うまくいくと思う。 – marsop

+0

https://stackoverflow.com/questions/27647918/detect-with-javascript-if-users-machine-is-using-12-hour-clock-am-pm -or-24-cl – Billy

関連する問題