0

日付とタイムスタンプを含むデータベースから日付を取得します。UI には日付とタイムスタンプの両方が表示されますが、日付 (yyyy-MM-dd) のみを表示したいです。変更を行いましたが、正しく設定できません。

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startDate = dateFormat.format(dataObj.getReportStartDate());
//The above startDate will be of the format : 2012-11-08

String 形式の startDate を Date データ型に設定したい。

dataIndexObj.setReportStartDate(startDate);
// Here the setReportStartDate is of the type date(), I cannot change its type to string.

parse(startDate) も試してみました..うまくいきませんでした。それを行う方法はありますか?

4

3 に答える 3

3

Date最初にフォーマットした値としてデータを既に取得しているため、質問はあまり明確ではありません。

UI から としてデータ取得することを意味し、それStringを変換する必要がある場合は、parse代わりにformat次のように使用する必要があります。

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
// TODO: Set the time zone as well...

Date date = dateFormat.parse(text);
于 2012-11-14T12:26:09.660 に答える
0

多分これはあなたが意味するものです:

データベースに2列を作成します。最初に文字列のタイプと他の日付。したがって、文字列型が必要な場合は、文字列型の列を呼び出します

于 2012-11-14T13:55:38.143 に答える
0

java.util.Dateと を混同しないでくださいjava.sql.Date1 つ目は名前が不十分で、日付と時刻の両方を表します。2 番目は、クラスの悪いハックで、最初のクラスをサブクラスとして拡張し、実際には00:00:00UTC に設定された時刻を保持しているのに、日付だけを保持するふりをしています。これらの厄介で設計が不十分な古いクラスは避けてください。それらは現在レガシーであり、java.time クラスに取って代わられています。

LocalDate

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

このようなオブジェクトを取得するjava.util.Dateには、古い日時クラスに追加された新しいメソッドを呼び出してオブジェクトを変換します。Instant途中でが必要です。このクラスは、ナノ秒単位の精度でUTCInstantのタイムライン上の瞬間を表します。

Instant instant = myUtilDate.toInstant();

おそらくjava.sql.Timestamp、データベースからのオブジェクトがあります。

Instant instant = myTimestamp.toInstant();

タイムゾーンを割り当てます。タイムゾーンは非常に重要です。なぜなら、特定の瞬間の日付はゾーンによって世界中で異なるからです。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

そこからオブジェクトを抽出しますLocalDate

LocalDate ld = zdt.toLocalDate();  // A date-only value, truncating time-of-day and forgetting time zone.

目的の形式で文字列を生成するには、 を呼び出すだけtoStringです。その形式は、標準の ISO 8601 形式です。java.time クラスは、日時値の文字列表現を解析/生成するときに、デフォルトで ISO 8601 形式を使用します。

String output = ld.toString();

別の方向に進みます。

LocalDate ld = LocalDate.parse( "2012-11-08" );
于 2016-08-20T00:50:20.583 に答える