0

こんにちは素敵な人々

兄弟を助けてください。私は Visual Basic の達人ですが、Java については言わずもがなです。

VBでは、私の方法は次のとおりです。

  1. System.DateTime.Now.ToLongTimeString()
  2. System.DateTime.Now.ToString() + "/" + System.DateTime.Now.Month.ToString() + "/" + System.DateTime.Now.Year.ToString()

最初のメソッドは正確な時刻を返します。例 = 12:08:36 AM

2 番目のメソッドは、正確な日付を返します。例: = 2012/09/26

私はまったく同じ結果を得たいと思っていますが、java.Howを使用してそれを行うにはどうすればよいですか。

よろしくお願いします。

4

3 に答える 3

3

.NET では、ローカルのタイム ゾーンでローカルのDateTime.Now日付と時刻を提供します。

などを Java で使用するnew Date()と、タイムゾーンを意識しない値が得られます。タイム ゾーンを考慮するにCalendarは、適切なタイム ゾーンを持つ を作成するか、使用する適切な文字列を作成する必要があります。SimpleDateFormat再度、フォーマットする前に適切なタイム ゾーンに設定します。例えば:

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
format.setTimeZone(...); // Whichever time zone you want
String text = format.format(new Date()); // "now"

また、Joda Timeは、ビルトインCalendarおよびDateクラスよりもはるかに優れた日付/時刻の Java API であることに注意してください。

最後に、.NET の 2 番目のサンプル コードにはバグがあります。DateTime.Now 一度だけ評価する必要があります。理想的には、フォーマット文字列を渡すだけですDateTime.Now.ToString("yyyy/MM/dd")。ただし、各ビットを個別に文字列に変換したい場合でも、値を一度ローカル変数にフェッチしてから再利用します。それ以外の場合、そのコードを真夜中頃に実行すると、日付が変更される可能性があります。たとえば、 2013 年の開始直前に実行すると、「2012/12/1」または「2012/1」の文字列になる可能性があります。 /1" どちらも正しくありません。

于 2012-09-26T09:49:42.513 に答える
1

java.text.SimpleDateFormatクラスを使用して日付をフォーマットnew java.util.Date()し、インスタンス システムの日付のデフォルトを作成します。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat dateFormat1 = new SimpleDateFormat("hh:mm:ss a");
System.out.println(dateFormat.format(new Date)); //2012/09/26
System.out.println(dateFormat1.format(new Date)); //12:08:36 AM
于 2012-09-26T09:50:40.517 に答える
0

現在の日付を表すオブジェクトを取得するには、単に を使用しnew Date()、フォーマットするにはSimpleDateFormatを使用します。

于 2012-09-26T09:47:41.763 に答える