• 日期格式化y与Y的区别
  • 正确格式:yyyyMMdd HH:mm:ss
  • y 表示 year,而 Y 表示 Week Year !
  • 这是一个遥远的故事,故事的开始是这样的。
  • 我们知道,不同的国家对于一周的开始和结束的定义是不同的。
  • 如在中国,我们把星期一作为一周的第一天,而在美国,他们把星期日作为一周的第一天。
  • 所以2020年的第一周应该怎么算,
  1. 1 月 1 日是周三,到下周三(1 月 8 日),这 7 天算作这一年的第一周。
  2. 因为周日(周一)才是一周的第一天,所以,要从 2020 年的第一个周日(周 一)开始往后推 7 天才算这一年的第一周。
  3. 因为 12.29、12.30、12.31 是 2019 年,而 1.1、1.2、1.3 才是 2020 年,而
  • 1.4 周日是下一周的开始,所以,第一周应该只有 1.1、1.2、1.3 这三天。
  • 所以简而言之就是,JDK针对ISO8601提供支持,引入大Y与小y
import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 日期格式化y与Y的区别
 * 正确格式:yyyyMMdd HH:mm:ss
 * y 表示 year,而 Y 表示 Week Year !
 * 这是一个遥远的故事,故事的开始是这样的。
 * 我们知道,不同的国家对于一周的开始和结束的定义是不同的。
 * 如在中国,我们把星期一作为一周的第一天,而在美国,他们把星期日作为一周的第一天。
 * 所以2020年的第一周应该怎么算,
 * 1. 1 月 1 日是周三,到下周三(1 月 8 日),这 7 天算作这一年的第一周。
 * 2. 因为周日(周一)才是一周的第一天,所以,要从 2020 年的第一个周日(周
 * 一)开始往后推 7 天才算这一年的第一周。
 * 3. 因为 12.29、12.30、12.31 是 2019 年,而 1.1、1.2、1.3 才是 2020 年,而
 * 1.4 周日是下一周的开始,所以,第一周应该只有 1.1、1.2、1.3 这三天。
 * <p>
 * 所以简而言之就是,JDK针对ISO8601提供支持,引入大Y与小y
 *
 * @author zrj
 * @version V1.0
 * @since 2020/11/22
 **/
public class DateFormatTest {

    @Test
    public void dateConvertString() throws ParseException {
        //Date转String
        LocalDateTime ldt = LocalDateTime.now();
        SimpleDateFormat sdf = new SimpleDateFormat();
        String format = sdf.format( ldt );
        System.out.println( "字符串类型当前时间:" + format );

        //String转Date
        Date date = sdf.parse( format );
        System.out.println( "Date类型当前时间:" + date );
    }

    /**
     * 验证Y与y的区别
     * 通过Y格式化2019年12月的日期
     * 使用的时候一定要注意大Y与小y是不一样的
     */
    @Test
    public void weekYesrTest() throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
        SimpleDateFormat sdf1 = new SimpleDateFormat( "YYYY" );
        // 输出结果2019
        System.out.println( sdf1.format( sdf.parse( "2019-12-01" ) ) );
        // 输出结果2020
        System.out.println( sdf1.format( sdf.parse( "2019-12-30" ) ) );
        // 输出结果2020
        System.out.println( sdf1.format( sdf.parse( "2020-01-01" ) ) );

    }

}