Javaの一般的な日付操作(値の取得、変換、加算、減算、比較)

高洛峰
リリース: 2017-01-20 16:33:19
オリジナル
1385 人が閲覧しました

Javaの開発過程で必ず絡むのがJDKバージョン1.7の日付関連の操作です。起きて動き回ってコーヒーを淹れるのに数分。もちろん、私は実現可能な解決策を提供するだけであり、ベストプラクティスを保証するものではありません。

1. Date 値

旧バージョンの JDK の時代には、日付値を取得するために java.util.Date クラスを使用するコードが多かったですが、Date クラスは国際化を実装するのが容易ではありません。実際には、JDK1 から 1 当初から、時刻と日付の処理には java.util.Calendar クラスを使用することをお勧めします。ここでは Date クラスの操作については紹介しません。早速、Calendar クラスを使用して現在の日付と時刻を取得する方法に進みましょう。

Calendarのコンストラクターメソッドは保護されているため、APIで提供されているgetInstanceメソッドを使用してCalendarオブジェクトを作成します。

//有多个重载方法创建 Calendar 对象
Calendar now = Calendar.getInstance(); //默认
//指定时区和地区,也可以只输入其中一个参数
Calendar now = Calendar.getInstance(timeZone, locale);
ログイン後にコピー

その後、このオブジェクトを通じて現在のさまざまな時間パラメーターを取得できます。

int year = now.get(Calendar.YEAR); //,当前年份
int month = now.get(Calendar.MONTH) + ; //,当前月,注意加
int day = now.get(Calendar.DATE); //,当前日Date date = now.getTime(); //直接取得一个 Date 类型的日期
ログイン後にコピー

他のタイプの時間データを取得するには、now.get() のパラメータを変更するだけで済みます。上記の 3 つのパラメータに加えて、その他の一般的に使用されるパラメータは次のとおりです。

•Calendar.DAY_OF_MONTH: Calendar.DATEと同じ日付
•Calendar.HOUR: 12時間形式の時間
•Calendar.HOUR_OF_DAY: 24時間形式の時間
•Calendar.MINUTE: 分
•Calendar.SECOND: 秒
•カレンダー。 DAY_OF_WEEK: 曜日

時間データの取得以外に、Calendar オブジェクトを通じてさまざまな時間パラメーターを設定することもできます。

//只设定某个字段的值
 // public final void set(int field, int value)
 now.set(Calendar.YEAR, );
 //设定年月日或者年月日时分或年月日时分秒
 // public final void set(int year, int month, int date[, int hourOfDay, int minute, int second])
 now.set(, , [, , , ]);
 //直接传入一个 Date 类型的日期
 // public final void setTime(Date date)
 now.set(date);
ログイン後にコピー

注:

•時間パラメータを設定すると、他の関連する値が再計算されます。たとえば、日付を 11 日に設定すると、曜日もそれに応じて変更されます。
•取得した月に1を加算すると、実際の月が得られます。
•カレンダークラスでは、日曜日が 1、月曜日が 2 などとなります。

2. 日付の変換

日付の値について説明した後、変換は主に java.text.SimpleDateFormat を使用して行われます。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 try {
   //日期转字符串
   Calendar calendar = Calendar.getInstance();
   Date date = calendar.getTime();
   String dateStringParse = sdf.format(date);
   //字符串转日期
   String dateString = "-- ::";
   Date dateParse = sdf.parse(dateString);
 } catch (ParseException e) {
   e.printStackTrace();  
 }
ログイン後にコピー

注:

•SimpleDateFormatオブジェクトの作成時に変換形式を指定する必要があります。

・変換形式は大文字と小文字が区別され、yyyyは年、MMは月、ddは日付、HHは24進法、hhは12進法、mmは分、ssとなります。 2番目を表します。

3. 日付の加算と減算

一般的に、日付に対して 2 種類の加算と減算の演算を行います:

• 特定の日付に基づいて、前後何日か、何年前かを計算します。 /after it 、または他の時間単位の前後の日付

//根据现在时间计算
Calendar now = Calendar.getInstance();
now.add(Calendar.YEAR, ); //现在时间的年后
now.add(Calendar.YEAR, -); //现在时间的年前
//根据某个特定的时间 date (Date 型) 计算
Calendar specialDate = Calendar.getInstance();
specialDate.setTime(date); //注意在此处将 specialDate 的值改为特定日期
specialDate.add(Calendar.YEAR, ); //特定时间的年后
specialDate.add(Calendar.YEAR, -); //特定时间的年前
ログイン後にコピー

Calendar オブジェクトの add メソッドを使用して、Calendar.YEAR を任意の時間単位フィールドに変更して、さまざまな時間単位での日付計算を完了できることに注意してください。

•2 つの時刻の間の間隔を計算します。たとえば、2016 年 1 月 1 日から現在までの間に何日あるかを計算します。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = "-- ::";
Calendar calendar = Calendar.getInstance();
long nowDate = calendar.getTime().getTime(); //Date.getTime() 获得毫秒型日期
try {
    long specialDate = sdf.parse(dateString).getTime();
    long betweenDate = (specialDate - nowDate) / ( * * * ); //计算间隔多少天,则除以毫秒到天的转换公式
    System.out.print(betweenDate);
} catch (ParseException e) {
    e.printStackTrace();
}
ログイン後にコピー


4. 日付比較

前のコードを調べてみると、日付比較演算を実行するときは常に、日付が「yyyyMMdd」形式の文字列に変換され、その後文字列が変換されることがわかりました。文字列を数値に変換し、数値を比較します。あはは、単純な比較演算には 10 行を超えるコードを記述する必要があり、少々大変です。次に、日付を比較する正しい方法について説明します。

日付比較には通常 2 つの方法があり、java.util.Date または java.util.Calendar に共通です。 1 つは、after() メソッドと before() メソッドを使用して比較する方法で、もう 1 つは、compareTo() メソッドを使用して比較する方法です。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString_01 = "2016-01-01 11:11:11";
String dateString_02 = "2016-01-02 11:11:11";
try {
    Date date_01 = sdf.parse(dateString_01);
    Date date_02 = sdf.parse(dateString_02);
    System.out.println(date_01.before(date_02)); //true,当 date_01 小于 date_02 时,为 true,否则为 false
    System.out.println(date_02.after(date_01)); //true,当 date_02 大于 date_01 时,为 true,否则为 false
    System.out.println(date_01.compareTo(date_02)); //-1,当 date_01 小于 date_02 时,为 -1
    System.out.println(date_02.compareTo(date_01)); //1,当 date_02 大于 date_01 时,为 1
    System.out.println(date_02.compareTo(date_02)); //0,当两个日期相等时,为 0
} catch (ParseException e) {
    e.printStackTrace();
}
ログイン後にコピー

以上が、この記事で紹介したJavaの一般的な日付演算(値の取得、変換、加算、減算、比較)の完全な説明です。

Java での一般的な日付操作 (値の取得、変換、加算、減算、比較) に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!