2013-03-22 3 views
6

Javaで時刻を表す正しい方法は何ですか?例えばJavaでの時刻(つまり、19:00)の表示方法は?

:9時、午前19時30分、など

基本的にこれは/日の実際の日付にリンクされていない時間帯です。

+2

あなたは[てSimpleDateFormat](http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormatについて聞いたことがあります.html)? –

+1

[Joda Time](http://joda-time.sourceforge.net/)ライブラリの 'LocalTime'を使用します。 – Jesper

+1

@ Eng.Fouad:文章の構文解析や書式設定はまったく問題ではありません。それは価値を表現する最良の方法について話しています。 –

答えて

10

これはすでにjodatimeでタグ付けされています。

時間を格納するJoda時間タイプはorg.joda.time.LocalTimeです。ジョーダ時間API documentationを参照してください。

+0

@jarnbjo APIドキュメントで言うように、 'LocalTime'はタイムゾーンのない時間を表しているので、DSTの変更とは関係ありません。特定の日ではなく、ただの時間です。 Joda Timeにはさまざまな目的のためにさまざまな日付と時間のクラスがあります。 – Jesper

+0

私はJodaがたくさんのクラスを持っていることに同意します。 LocalTimeのAPIドキュメントでは、「LocalTimeの計算は年表を使用して実行されます。この年表は、すべての計算のUTCタイムゾーンに内部的に設定されます」というメッセージが表示されます。これは部分的にAPIドキュメントスニペットと矛盾します。たとえLocalTimeがタイムゾーンを直接参照していなくても、それは年表を参照し、年表はUTCを参照します。 LocalTimeがTZに依存しない場合、年代順はどのような役割を果たし、なぜ年代順はUTCに設定されると言われていますか? – jarnbjo

-3

通常、表示する必要がない場合は、の長さがです。

System.currentTimeMillis()を参照してください。

+2

System.currentTimeMillisは時刻を表す非常に悪い方法です –

+0

私が言ったように - それは表示するつもりはないとき。私は「日付なし」はjava.util.Dateが意味していないと考えました。だから、私に悪い得点を与えるにはちょっと速いですね。 :-) –

+0

_例えば:09:00,19:30、など。彼は日付を持たない人間が読める形式で時間を表示したいと考えています。 –

0

これを試してみてください:Eng.Fouadが示唆

Calendar cal = Calendar.getInstance(); 

     cal.get(Calendar.HOUR_OF_DAY); 
     cal.get(Calendar.MINUTE); 
-4

と同じように、あなたはまだDateオブジェクトを使用する必要があります。そうすれば、Dateオブジェクトに存在するすべてのユーティリティにアクセスできます。あなたがそれを提示するたびに、それの日付部分を無視してください。

Date date = new Date(); 
DateFormat df = new SimpleDateFormat("hh:mm"); 
String timeOfDay = df.format(date); // ex: "18:00" 

または特定の時間を作成するための

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 18); 
cal.set(Calendar.MINUTE, 00); 
DateFormat df = new SimpleDateFormat("hh:mm"); 
String timeOfDay = df.format(cal.getTime()); // "18:00" 
+6

いいえ、あなたは絶対に 'Date'オブジェクトを使うべきではありません。それは間違った表現です。 'Date'オブジェクトは瞬間を表し、それだけです。 (ひどく名前が付けられています).Joda Timeには、このケースの*具体的なタイプ*があります。これが正しいアプローチです。 Java APIは、日付/時刻の作業で自然に発生するさまざまな種類の値を表現するのに十分な型を与えないことによって、根本的に壊れています。また、 'SimpleDateFormat'を使用する場合は、パターンをもっと注意する必要があります。与えられたパターンは、12時間制を使用しているときに決して" 18:00 "を生成しません。 –

関連する問題