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 同上
}