42

検索したものに変換する必要JsDatejava.util.Date.ありますが、何も見つかりませんでした。それで、この問題を手伝ってくれませんか?

編集: GWT画面でこの変換プロセスを行います。Datepicker画面上にあり、そのメソッドを使用すると価値が得られJsDateますgetValue()。したがって、この値を Date 型を持つオブジェクトのプロパティに入れることになっています。

ObjectName.setDate(PickerName.getValue());

私の編集がより明確になることを願っています。

編集2:

この行は私の問題の解決策です:

myObject.setDate(new Date((long) myPicker.getValue().getTime()));
4

7 に答える 7

40

日付変換の最良の方法は、ミリ秒単位の時刻、UTCを使用することです。JS Dateオブジェクトとjava.util.Dateクラスはどちらも、ミリ秒(getTime())への変換とミリ秒からのインスタンス化(コンストラクターを使用)をサポートしています。

于 2012-07-30T13:50:17.117 に答える
36

java.util.DateJSの「エポックからの時間」の値からオブジェクトを作成できますDate

javascript

var d = new Date().getTime();

java

// get value from client (ajax, form, etc), and construct in Date object

long valueFromClient = ...

Date date = new Date(valueFromClient);

String formatted = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
于 2012-07-30T13:50:17.693 に答える
3

あなたはこれが欲しいかもしれません:

java:
String jsDate="2013-3-22 10:13:00";
Date javaDate=new SimpleDateFormat("yy-MM-dd HH:mm:ss").parse(jsDate);
System.out.println(javaDate);
于 2013-03-22T02:12:21.243 に答える
3

ISO 8601 および java.time

ISO 8601 は、日付と時刻の形式を含む日付と時刻の国際標準です。JavaScript と Java の両方を含む、ほぼすべてのプログラミング言語がサポートされています。

JavaScript では、 を使用して ISO 8601 形式の文字列を生成しますDate.toISOString()。フォーマッタは必要ありません。

  var d = new Date();
  var n = d.toISOString();
  console.log(n);

結果は、末尾の で示される UTC であることを覚えている限り、ある程度人間が判読できますZ

Java では、 を使用して文字列を解析しますInstant.parse()。ここでもフォーマッタを指定する必要はありません。

    String stringFromJavaScript = "2021-07-12T05:54:03.365Z";
    Instant inst = Instant.parse(stringFromJavaScript);
    System.out.println(inst);

出力:

2021-07-12T05:54:03.365Z

質問はjava.util.Date、日付ピッカーからの結果を求めました。名前にもかかわらず aは日付を表さないことと、クラスの設計が不十分で古くなっているjava.util.Dateことの両方の理由から、これを使用することは避ける必要があります。時刻のない日付の場合、aが適切です。DateDateLocalDate

    LocalDate date = inst.atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println(date);

私のタイムゾーンでは、出力は次のとおりです。

2021-07-12

変換はタイム ゾーンに依存し、JVM のデフォルトのタイム ゾーン (または に渡すタイム ゾーンatZone()) が日付ピッカーで使用されるものと同じである場合にのみ正しくなります。

Dateまだ java.time にアップグレードされていないレガシー APIが必要な場合:

    Date oldfashionedDate = Date.from(inst);
    System.out.println(oldfashionedDate);

月 7 12 07:54:03 CEST 2021

リンク

于 2021-07-12T06:01:13.620 に答える
0

DateFormat解析メソッドを使用することをお勧めします(ドキュメントはここにあります)。日付の文字列表現を解析して、java.util.Dateを返すことができます。

于 2012-07-30T13:48:22.860 に答える