DateオブジェクトとdatetimeをDateオブジェクトとして格納しています。java.util.Dateオブジェクトに時間部分が含まれているかどうかを確認するにはどうすればよいですか?
しかし、後で、Dateオブジェクトが日付か日時かを判断できるようにする必要があります。
05/18/05 00:00:00と05/18:05の両方に時分があります。私は本当にそれらを区別することはできません。
DateオブジェクトとdatetimeをDateオブジェクトとして格納しています。java.util.Dateオブジェクトに時間部分が含まれているかどうかを確認するにはどうすればよいですか?
しかし、後で、Dateオブジェクトが日付か日時かを判断できるようにする必要があります。
05/18/05 00:00:00と05/18:05の両方に時分があります。私は本当にそれらを区別することはできません。
java.util.Dateは実際には日付ではなく、日付として使用する方法がないため、日付ではありません。あなたは別のアプローチを考え出す必要があります。
はい。このアプローチには欠陥があります。私たちは日付と日時のために異なるオブジェクトを持つ必要があります。 – thinkanotherone
これは最高の答えとしてマークされたとは思えません。これは解決策ではなく、ただの意見です – FiruzzZ
Google's DateTimeライブラリを検証に使用することができます。
parseDateTimeメソッドとparseDateメソッドがあり、正しくフォーマットされていない場合はNumberFormatExceptionがスローされます。
その後、あなたは...私はJDBC ResultSet
から入手したとして、彼らは彼らのスーパーjava.util.Date
、右に対して宣言されている間、あなたが実際にjava.sql.Date
とjava.sql.Timestamp
インスタンスを扱っていることを理解し
try {
DateTime someVar = DateTime.parseDate("your_date_as_a_string");
} catch (java.lang.NumberFormatException nfe) {
// This isn't a date...
}
try {
DateTime someVar = DateTime.parseDateTime("your_date_as_a_string");
} catch (java.lang.NumberFormatException nfe) {
// This isn't a date/time...
}
フロー制御に例外を使用しないでください! – Bohemian
@ボヘミアン - ハァッですか?何故なの? –
実際に、ユーザー入力(つまりWebフォーム上のテキストボックス)で作業する場合、ユーザーが日付を正しく入力したかどうかを確認する必要がある場合、提供された入力でパーサを使用することが私の唯一の方法ですそれを検証することを意識しています... –
ができますか?
その場合は、instanceof
を使用してください。
if (date instanceof java.sql.Date) {
// It was originally a DATE.
} else if (date instanceof java.sql.Timestamp) {
// It was originally a TIMESTAMP (DATETIME).
}
あなたの日付時刻が、彼らは00:00:00
のHH:mm:ss
を持っていることはありません。すなわち、真夜中にならないことが保証されない限り、別に深夜になるために起こる「日付」と日付時刻を指示するいかなる固体方法はありません。
あなたの日付時刻は、その後、深夜になることはありません場合:
if (new SimpleDateFormat("HH:mm:ss").format(object).equals("00:00:00"))
はDate
オブジェクトが「日付」であるかどうかを判断するために行うだろう。
あなたのデザインに欠陥があり、別の解決策が見つかるはずです。私はまた、Date
クラスの名前に欠陥があり、この種の混乱を招くと思います。私はここに掲載、それは時間の部分を持っているかどうかを確認するために、生の時間値を改造に関するソリューションに同意するもののドミトリが言ったように
、欠陥がDate
値が正確に深夜の時間部分を持っている場合、方法はありませんということです伝える。
ここで少し横向きに考えてみると、おそらくDate
に拡張された独自のクラスを作成できます。この変数には、 "isDateTime"という名前のメンバ変数があります。次に、日付または日時の値を最初にロードするときに、その日時の有無に応じて真偽にブール値を設定します。
使用してApacheのコモンズ-LANG-3:解析のための
DateUtils.truncate(fecha, Calendar.DAY_OF_MONTH).equals(fecha)
不要、フォーマットやサードパーティライブラリ。 あなたは簡単に行うことができます
Calendar c = ...
c.setTime(date);
//this doesn't care about nanos
if(c.get(Calendar.HOUR_OF_DAY) + c.get(Calendar.MINUTE) + c.get(Calendar.SECOND) > 0) {
....
}
PDを:私は1000年から1025年でこれを行います。000のオブジェクトであり、パフォーマンスを危険にさらすようには見えませんが、もちろんこれはどこで、なぜこの操作をしたいのかに依存します
Javaは好奇心の疎外さを異にして、これは簡単に.NETで簡単です。 – Jason
'カレンダーc = Calendar.getInstance();日付x; //いくつかのデータで ' ' c.setTime(x); c.get(Calendar.YEAR)//必要なフィールド –
@Jason "date formats" in javaは、レンダリング/解析のためのものです。日付は、1970年以来ミリ秒のちょうどラップされた長さです。これはあなたが比較することができます。日付はフォーマットを「持たない」 - DateFormatオブジェクトによってフォーマットされます。 – Bohemian