java 时间和日期总结_Java时间 日期 总结

获取当前时间

new Date()

Calendar calendar= Calendar.getInstance();

calendar.getTime()

LocalDateTime.now()

System.currentTimeMillis(); // 毫秒

java.util.Date

Date对象里存的是自格林威治时间( GMT)1970年1月1日0点至Date对象所表示时刻所经过的毫秒数

Sysytem.out.println函数在打印时间时,会取操作系统当前所设置的时区,然后根据这个时区将同毫秒数解释成该时区的时间

new Date()

java.util.Calendar

Calendar类是抽象类型

Calendar cal = Calendar.getInstance();

// 获取年

int year = cal.get(Calendar.YEAR);

java.util.concurrent.TimeUnit

TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep()

java.text.SimpleDateFormat

String timeStr = "2017-8-24 11:17:10"; // 字面时间

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

sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置北京时区

Date d = sdf.parse(timeStr);

System.out.println(sdf.format(d) + ", " + d.getTime());

输出:2017-08-24 11:17:10, 1503544630000

字母

日期或时间元素

表示

示例

G

Era 标志符

Text

AD

y

Year

1996; 96

M

年中的月份

Month

July; Jul; 07

w

年中的周数

Number

27

W

月份中的周数

Number

2

D

年中的天数

Number

189

d

月份中的天数

Number

10

F

月份中的星期

Number

2

E

星期中的天数

Text

Tuesday; Tue

a

Am/pm 标记

Text

PM

H

一天中的小时数(0-23)

Number

0

k

一天中的小时数(1-24)

Number

24

K

am/pm 中的小时数(0-11)

Number

0

h

am/pm 中的小时数(1-12)

Number

12

m

小时中的分钟数

Number

30

s

分钟中的秒数

Number

55

S

毫秒数

Number

978

z

时区

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

时区

RFC 822 time zone

-0800

日期和时间模式

结果

"yyyy.MM.dd G 'at' HH:mm:ss z"

2001.07.04 AD at 12:08:56 PDT

"EEE, MMM d, ''yy"

Wed, Jul 4, '01

"h:mm a"

12:08 PM

"hh 'o''clock' a, zzzz"

12 o'clock PM, Pacific Daylight Time

"K:mm a, z"

0:08 PM, PDT

"yyyyy.MMMMM.dd GGG hh:mm aaa"

02001.July.04 AD 12:08 PM

"EEE, d MMM yyyy HH:mm:ss Z"

Wed, 4 Jul 2001 12:08:56 -0700

"yyMMddHHmmssZ"

010704120856-0700

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

2001-07-04T12:08:56.235-0700

java.text.DateFormat

DateFormat df1 = DateFormat.getDateInstance();

DateFormat df2 = DateFormat.getDateTimeInstance();

DateFormat df3 = DateFormat.getTimeInstance();

java.time.Instant

精确到纳秒

Instant 代表的是一个时间,并不包括时区,1970年计算偏移量

实例不可变,可计算,可比较

Instant instant = Instant.now();

System.out.println(instant); # 2020-11-10T08:31:41.475Z

// 现在的时间上加上5个小时4分钟

Instant instant1 = instant.plus(Duration.ofHours(5).plusMinutes(4));

java.time.LocalTime

不带时区的日期

实例不可变,可计算,可比较

java.time.LocalDate

不带时区的日期

实例不可变,可计算,可比较

java.time.LocalDateTime

ISO-8601日历系统中没有时区的日期时间

实例不可变,可计算,可比较

LocalDateTime now = LocalDateTime.now();

now.isBefore();

now.isAfter();

now.format();

now.toLocalDate();

now.plusDays(1);//可能是负数

now.minusDays(1);

now.getDayOfWeek();

now.toEpochSecond(ZoneOffset.of("+8"));// 获取时间戳

时间戳

LocalDateTime.now().

前台UI时间、Java程序时间、Mysql时间

java.sql.Date

java.sql.Time

java.sql.Timestamp

从数据库读取的时间,到了java客户端可能存在不同时间,这里就要设置mysql的时区 serverTimezone=Asia/Shanghai

Instant instant = Instant.parse("2017-05-24T07:56:22Z");

LocalTime localTime = instant.atZone(ZoneId.systemDefault()).toLocalTime();

时区

8af75d55134ad600ae42f35c9df7e7bd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值