日期格式转换

2023-10-17 08:17:49 浏览数 (2)

SimpleDateFormat使用

没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!

1、Date转String

先设置要转换的日期,在格式化

使用格式: sdf.format(date);

代码语言:javascript复制
//Date 转 String
@Test
public void DateToString(){
    Date date = new Date();
    System.out.println(date);  //Mon Mar 29 18:20:58 CST 2021
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
    System.out.println(sdf.format(date));  //2021-03-29 18:20:58
}

效果:

例如:

代码语言:javascript复制
@Test
public void Test2()  {
    SimpleDateFormat sdf = new SimpleDateFormat("今年 yyyy 年 今天是一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中第 k 时 属于 z时区");
    Date date = new Date();
    System.out.println(sdf.format(date));
}

效果:

有个偷懒的写法

代码语言:javascript复制
DateFormat.getDateTimeInstance().format(new Date())   // 格式  年-月-日 时:分:秒

2、String转Date

设置日期格式,设置要转化的字符串,使用:格式.parse(字符串)转化

代码语言:javascript复制
@Test
public void StringToDate() throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = "2021-03-29 19:15:22";
    Date date = format.parse(str);
    System.out.println(date);//Mon Mar 29 19:15:22 CST 2021
}

效果:

指定日期

代码语言:javascript复制
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 Date parse = simpleDateFormat.parse("1999-05-03 12:13:14"); // 转为时间类型
 String format = simpleDateFormat.format(parse);  // 又转为字符串了

3、字符代表含义

常用:yyyy-MM-dd HH:mm:ss 年月日 时分秒

SimpleDateFormat函数转化标志

G     年代标志符 公元 y       年 M     月 d      日 h      时 在上午或下午 (1~12) H     时 在一天中 (0~23) m    分 s      秒 S     毫秒 E     今天是星期几 D    一年中的第多少天 F     一月中第几个星期几 W     一月中第几个星期 w     一年中第几个星期

a    上午 / 下午 标记符 k     时 在一天中 (1~24) K     时 在上午或下午 (0~11) z     时区

4、数据库字段和Java字段对应关系

代码语言:javascript复制
   JDBCType            JavaType
    CHAR                String
    VARCHAR             String
    LONGVARCHAR         String
    NUMERIC             java.math.BigDecimal
    DECIMAL             java.math.BigDecimal
    BIT                 boolean
    BOOLEAN             boolean
    TINYINT             byte
    SMALLINT            short
    INTEGER             int
    BIGINT              long
    REAL                float
    FLOAT               double
    DOUBLE              double
    BINARY              byte[]
    VARBINARY           byte[]
    LONGVARBINARY               byte[]
    DATE                java.sql.Date
    TIME                java.sql.Time
    TIMESTAMP           java.sql.Timestamp
    CLOB                Clob
    BLOB                Blob
    ARRAY               Array
    DISTINCT            mapping of underlying type
    STRUCT              Struct
    REF                 Ref
    DATALINK            java.net.URL[color=red][/color]

5、时区

GMT、UTC、DST、CST时区代表的意义

GMT:Greenwich Mean Time

格林威治标准时间,地球每15°(经度)被分为一个时区,共二十四个时区,相邻时区时差一小时,北京为东八区。

UTC:Universal Time Coordinated

世界协调时间,又称世界统一时间(世界标准时间)。

中国时间比GMT快8小时(中国时间与UTC的时差为 8,也就是UTC 8)。

DST:Daylight Saving Time

夏季节约时间,即夏令时;是为了利用夏天充足的光照而将时间调早一个小时,北美、欧洲的许多国家实行夏令时。

CST:四个不同时区的缩写

CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

代码语言:javascript复制
Central Standard Time (USA) UT-6:00        美国标准时间
Central Standard Time (Australia) UT 9:30  澳大利亚标准时间
China Standard Time UT 8:00     中国标准时间
Cuba Standard Time UT-4:00      古巴标准时间

时间戳:1970年1月1日 00:00:00到现在所经历的秒数,与时区没有关系

JavaScript与Java输出的区别

代码语言:javascript复制
Java 获取的CST时间用的是China Standard Time.
而客户端JavaScript则默认采用的GMT时间。

例如:JavaScript里面

代码语言:javascript复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		   <script  language ="javascript" >
			  var myDate=new Date();
			  document.write("当前时间:",myDate);
		   </script>
	</body>
</html>

在Java中:

代码语言:javascript复制
@Test
public void DateToString(){
    Date date = new Date();
    System.out.println(date); 
}

效果对比:

日期格式输出1616947200000转2021-04-03 数据库字段类型为datetime 相对于的实体类字段:

代码语言:javascript复制
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT 8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") //可不写
private Date entrytime;

Calendar的使用

1、用法

代码语言:javascript复制
先实例化
Calendar calendar =Calendar.getInstance();

指定日历时间
set(int year ,int month,int date)     
set(int year ,int month,int date,int hour,int minute)     
set(int year ,int month,int date,int hour,int minute,int second)     

指定现在的时间
calendar.setTime(new Date());

要获取年月日等信息,使用get
示例:    calendar.get(Calendar.YEAR)
calendar.get(Calendar.MONTH) 1     获取月份,默认从0开始,所以 1
calendar.get(Calendar.DAY_OF_MONTH)    几号,等同于下面的DATE
calendar.get(Calendar.DATE)
calendar.get(Calendar.DAY_OF_WEEK)-1    星期几 周日的返回值是 1
calendar.get(Calendar.DAY_OF_YEAR)      指定日期是当年的第多少天

对日期进行加减
calendar.add(Calendar.DATE,-1);  // 往前推一天
calendar.add(Calendar.MONTH,-1); // 往前推一个月
calendar.add(Calendar.YEAR,5); // 往后加5年 2026

日期转时间
simpleDateFormat.format(calendar.getTime())

2、测试

代码语言:javascript复制
@Test
public void testCalendar() throws ParseException {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date parse = simpleDateFormat.parse("2021-01-02");
    calendar.setTime(parse);
    System.out.println(simpleDateFormat.format(calendar.getTime()));
    calendar.add(Calendar.DATE,-6);
    System.out.println(calendar.get(Calendar.YEAR) "-" String.valueOf(calendar.get(Calendar.MONTH) 1) "-" calendar.get(Calendar.DAY_OF_MONTH));
    System.out.println(simpleDateFormat.format(calendar.getTime())); // 2019-12-27 同上
}

0 人点赞