Java 日付形式 (yyyy-MM-dd HH:mm:ss SSS)

一般的な形式は、yyyy-MM-dd HH:mm:ss です。

2019-12-31 06:07:59:666 の時間を例として考えます。

キャラクター

意味

y (小文字の y)

yyyy---->2019

M(大文字のM)

  MM---->12

d (小文字の d)

1月の日々

  dd---->31

H (24 時間制、大文字の H)

時 (0 ~ 23)

  HH---->18

h (12 時間制、小文字の h)

時間 (1 ~ 12)

  はぁ--->06

m (小文字のm)

ポイント

  mm--->07

s (小文字の s)

2番

  ss---->59

S(大文字のS)

ミリ秒

 SSS---->666

Y (大文字の y)

週 年

YYYY---->2020

D(大文字のD)

年間の日数

  DD---->365

yyyy-MM-dd と YYYY-MM-dd の違いは何ですか?

Y は Week Year を表し、現在の週が位置する年を示します。このようにして、1 年は 52/53 週に分割されます (数年ごとに 1 週​​間が追加される閏年の概念に似ています)。「週年」の各週は特定の年にのみ属するため、特定の年の最初の週または最後の週が新しい年の場合、一部の日付と年は実際の年と一致しません。

週年には 2 つの基準があります。

ISO 8601 : 国際標準、毎週月曜日に始まり、毎年の最初の週には少なくとも 4 日が含まれます

Common : 共通の標準。毎週日曜日に始まり、各年の最初の週に少なくとも 1 日が含まれます。

ISO 8601 標準を使用して、年の最後の週と年の最初の週の例を別々に見てみましょう。

2015 年の最後の週は大晦日であり、2016 年の最初の 3 日間です (2015 年 12 月の最初の 4 日間はデフォルトで 1 週間、つまり 2015 年の週になります)。YYYY を使用すると、最終結果は 2015 になります。時間が巻き戻されているようです。

2020 年の最初の週は年をまたぎ、2019 年の最後の 2 日間 (4 日未満であるため、デフォルトは 2020 年の週である来週) は YYYY を使用し、結果は 2020 になります。

    

コード検証

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    public static void main(String[] args) {
        // 将指定时间转换成时间戳,再由时间戳转换成时间
        String Stime = "2015-01-01 17:17:22"; // 处理前的时间
        long Ltime = 0; // 时间戳

        System.out.println("处理前的时间:" + Stime);

        // 时间转为时间戳
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date2 = simpleDateFormat.parse(Stime);
            Ltime = date2.getTime();
            System.out.println("时间转时间戳结果:" + Ltime);
        } catch (ParseException | java.text.ParseException e) {
            e.printStackTrace();
        }

        //将时间戳转换为时间
        String res = simpleDateFormat.format(Ltime);
        System.out.println("时间戳转时间结果:" + res);
    }
}

操作結果:

処理前の時間: 2015-01-01 17:17:22

タイムスタンプ結果までの時間: 1420103842000

タイムスタンプと時間の結果: 2015-01-01 17:17:22

2つの時間が同じであることがわかります。

コード内の yyyy を YYYY に変更した後

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(" yyyy -MM-dd HH:mm:ss");

操作結果:

処理前の時間: 2015-01-01 17:17:22

タイムスタンプ結果までの時間: 1419758242000

タイムスタンプと時間の結果: 2015-12-28 17:17:22

2 つの時刻が同じではないことがわかります。

o racle と java の日付形式の違い

Java の日付形式は次のとおりです。

yyyy-MM-dd HH:mm:ss: 時刻を 24 時間制に変換することを表します。例: 2020-01-07 13:21:55

yyyy-MM-dd hh:mm:ss: 時間を 12 時間制に変換することを意味します。例: 2020-01-07 03:24:21

Oracle の日付形式は次のとおりです (大文字と小文字は区別されません)。

yyyy-MM-dd HH24:mi:ss: Oracle の 24 時間時計を表します。例: 2020/1/7 13:21:55

yyyy-MM-dd HH:mi:ss: Oracle の 12 時間制を表します。例: 2020/1/7 9:21:55

oracle が java と異なる理由は、oracle では大文字と小文字が区別されないことがわかっているためです。そのため、大文字と小文字に応じて 24 時間と 12 時間を表す Java の表現は、oracle で問題を引き起こし、oracle の 24 時間は問題を引き起こします。合計には特殊な処理が施されており、上図のように hh の後に 24 が加算され、mm が mi に変更されます。

コンテンツのほとんどは次から転載されています:日付形式について知っておくべきピット (yyyy-MM-dd HH:mm:ss SSS)_yyyy-mm-dd hh:mm:ss.sss_37358143 blog-CSDN ブログ

おすすめ

転載: blog.csdn.net/xijinno1/article/details/132388123