外部ソースから自分のプログラムにデータを取り込み、ISO8601 日付が添付されていますが、時間/分/秒をゼロに設定することが要件の 1 つです。これは、日付を受け取る前に発生します。だから私はデータからこれを取得します。
2013-05-17T00:00:00.000Z
例えば。次に、その値を「businessDay」という Joda DateTime オブジェクトに入れます。この値に基づいていくつかの処理を行いますが、MongoDB に永続化する必要があります。
Joda DateTime オブジェクトはシリアル化できないため、DateTime オブジェクトを Date オブジェクトに入れ、それを Mongo に保持する必要があります (そして、それが出てきたらそれを元に戻します)。
このように Joda を使用すると
businessDay.toDate()
、Java Date オブジェクトを受け取りますが、
Sun May 19 20:00:00 EDT 2013
通常印刷される businessDay は
2013-05-20T00:00:00.000Z
それはそれを私のローカルタイムゾーンに変換し、前日にします。私が欲しいのは、DateTime オブジェクトを、値を保持する Date オブジェクトに変換することです。
私は DateTimeFormatter でたくさんのことを試してきましたが、まったく機能しません。私はまた、すべての努力を削除してきました。それ以外の場合はここに貼り付けますが、これを理解しようと一日中これを行ってきました.
ご協力ありがとうございます。
編集:
String Date を Joda DateTime オブジェクトに変換するメソッドを示しています。
private DateTime asDateTime(String value) {
// Was experiencing an issue converting DateTime to date, it would convert to localtime zone
// giving me the wrong date. I am splitting the value into its year/month/day values and using a dateFormatter
// to give me an appropriate format for the date. Timezone is based on UTC.
String[] splitValue = value.split("-");
String[] splitDay = splitValue[2].split("T");
int year = Integer.parseInt(splitValue[0]);
int month = Integer.parseInt(splitValue[1]);
int day = Integer.parseInt(splitDay[0]);
DateTime date = new DateTime(DateTimeZone.UTC).withDate(year, month, day).withTime(0, 0, 0, 0);
return date;
}