2

ユーザーが時間を入力できるように時間をフォーマットしようとしています。

 b1.setStartTime(JOptionPane.showInputDialog("Enter Start time for Booking: "));

上記のコードでこれを行う方法はありますか?

予約クラスの startTime を Timestamp に変更しようとしましたが、主にこのコードを使用しようとしました:

DateFormat timeFormatter =
    DateFormat.getTimeInstance(DateFormat.SHORT, b1.getStartTime());

しかし、私はそれに頭を包むのに苦労しています。私がしたいのは、ユーザーが午前 7 時 20 分などの短いバージョンとして時間を入力できるようにすることだけです。次に、この時間を使用して SQL データベースと比較できます。

私には、 DateFormat.getTimeInstance() が進むべき道のようです。これを使用する場合、予約クラスの startTime は日付型にする必要がありますか?また、ユーザー入力をどのようにフォーマットできますか?

4

4 に答える 4

2

SimpleDateFormat が便利な場合があります。

 tf = new java.text.SimpleDateFormat ("h:mm a") 

これを使用して時間を解析できます。

 Date d = tf.parse (textfield.getText ());

逆に、日付/時刻を次の形式で出力します。

 System.out.println ("Time: " + tf.fomat (date)); 
于 2012-04-26T18:10:23.513 に答える
2
String datetime = [code to get time string];
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
Date date = (Date) sdf.parse(datetime);

今後、SimpleDateFormat の Java ドキュメントを参照して、フォーマットの設定方法を学習できます: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2012-04-26T18:03:39.127 に答える
1

まず、JOptionPane の結果を常にチェックして、ユーザーが実際に何かを入力し、キャンセルをクリックしていないことを確認する必要があります。

次に、ユーザーに時刻を入力してもらいたい方法がわかっている場合は、(a) 時刻の入力方法をユーザーに伝える必要があります (b) SimpleDateFormat を使用して解析します

于 2012-04-26T18:04:32.023 に答える
0

他の回答は正しいですが、時代遅れです。

java.time

java.timeフレームワークは、Java 8 以降に組み込まれています。java.util.Dateこれらのクラスは、 、.Calendar、 &などの古い面倒な日時クラスに取って代わりますjava.text.SimpleDateFormat。Joda -Timeチームは、java.time への移行についてもアドバイスしています。

詳細については、 Oracle チュートリアルを参照してください。また、Stack Overflow で多くの例と説明を検索してください。

java.time 機能の多くは、ThreeTen-Backportで Java 6 および 7 にバックポートされ、さらにThreeTenABPで Android に適合されています。

LocalTime

このLocalTimeクラスは、日付とタイム ゾーンのない時刻を表します。

フォーマット パターンを定義します。ここで見られるパターンは 12 時間時計用で、時間の値は 1 から 12 であると予想されます。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "h:m a" );

そのフォーマッタを使用して解析します。

String input = "7:20 AM";
LocalTime localTime = LocalTime.parse( input , f );

もちろん、データ入力をサニタイズし、コードを追加して、無効な入力が原因でスローされた例外をキャプチャする必要もあります。ここでは簡潔にするために、このようなコードは省略します。

データベース

JDBC ドライバーがJDBC 4.2以降に準拠している場合、データベースにクエリを実行するために、 /LocalTimeを介してオブジェクトを直接使用できる場合があります。setObjectgetObject

そうでない場合は、古いクラスに追加された新しいメソッドを使用して、古い java.sql 型に変換します。この状況では、java.sql.Time.

java.sql.Time t = java.sql.Time.valueOf( localTime );

…そして反対方向…</p>

LocalTime localTime = t.toLocalTime();
于 2016-08-09T00:30:53.537 に答える