cover

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
* 将long类型的timestamp转为LocalDateTime
*/
public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zone = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zone);
}

/**
* 将LocalDateTime转为long类型的timestamp
*/

public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return instant.toEpochMilli();
}


/**
* 字符串转 LocalDateTime
*/

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime lastSyncLostTime = LocalDateTime.parse("2000-01-01 00:00:00",df);


/**
* Calendar 转 Timestamp
*/
Calendar calendar = Calendar.getInstance();
new Timestamp(TimeUtil.getTimestamp(calendar.getTime())

/**
* Timestamp 转 LocalDateTime
*/
Timestamp time = Timestamp.from(Instant.now());
LocalDateTime localDateTime = time.toLocalDateTime();
/**
* LocalDateTime 转 Timestamp
*/
Timestamp time = Timestamp.valueOf(LocalDateTime.now());
/**
* LocalDateTime 转为long类型的timestamp 再转 Calendar
*/
public static long getCalendarOfDateTimeAndTimestamp(LocalDateTime localDateTime) {
LocalDateTime lastSyncLostTime = LocalDateTime.of(1999,1,1,0,0);
//方法1
long time = lastSyncLostTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();、
//方法2
long time = lastSyncLostTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
}

// 获得某天最大时间
public static Date getEndOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());;
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
}

// 获得某天最小时间
public static Date getStartOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
}
//根据需求需要取得当天的零点

LocalDateTime today_start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);//当天零点
String td_st_str =
today_start.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));

//获取当天结束时间
LocalDateTime today_end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);//当天零点


LocalDate today = LocalDate.now();
//本月的第一天
LocalDate firstday = LocalDate.of(today.getYear(),today.getMonth(),1);
//本月的最后一天
LocalDate lastDay =today.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("本月的第一天"+firstday);
System.out.println("本月的最后一天"+lastDay);

// 取本月第1天:
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2014-12-01
// 取本月第2天:
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2014-12-02
// 取本月最后一天,再也不用计算是28,29,30还是31:
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2014-12-31
// 取下一天:
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 变成了2015-01-01
// 取2015年1月第一个周一,这个计算用Calendar要死掉很多脑细胞:
LocalDate firstMondayOf2015 = LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2015-01-05


// 使用日期和时间构造日期时间对象->指定时区转换成时间戳
public static long getTodayStartTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MIN).toEpochSecond(ZoneOffset.of("+8"));
}

public static long getTodayEndTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MAX).toEpochSecond(ZoneOffset.of("+8"));
}
/**
* 获取时差
*/
LocalDateTime from = LocalDateTime.of(2017, Month.JANUARY, 5, 10, 7, 0); // 2017-01-05 10:07:00
LocalDateTime to = LocalDateTime.of(2017, Month.FEBRUARY, 5, 10, 7, 0); // 2017-02-05 10:07:00
Duration duration = Duration.between(from, to); // 表示从 2017-01-05 10:07:00 到 2017-02-05 10:07:00 这段时间

long days = duration.toDays(); // 这段时间的总天数
long hours = duration.toHours(); // 这段时间的小时数
long minutes = duration.toMinutes(); // 这段时间的分钟数
long seconds = duration.getSeconds(); // 这段时间的秒数
long milliSeconds = duration.toMillis(); // 这段时间的毫秒数
long nanoSeconds = duration.toNanos(); // 这段时间的纳秒数
Duration duration1 = Duration.of(5, ChronoUnit.DAYS); // 5天
Duration duration2 = Duration.of(1000, ChronoUnit.MILLIS); // 1000毫秒

/**
* 距离今天结束还有多少秒
*/
LocalDateTime of = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
long between = ChronoUnit.SECONDS.between(LocalDateTime.now(), of);
/**
* 获取现在时间
*/
Long millisecond = Instant.now().toEpochMilli(); // 精确到毫秒
Long second = Instant.now().getEpochSecond();// 精确到秒
LocalDateTime now = LocalDateTime.now()//日期时间分秒
Timestamp time = Timestamp.from(Instant.now());

参数声明:

1
2
3
4
5
6
7
final Date date = new Date();
final Timestamp timestamp = new Timestamp(date.getTime());
final Calendar calendar = Calendar.getInstance();
final Instant instant = Instant.now();
final LocalDateTime localDateTime = LocalDateTime.now();
final ZonedDateTime zonedDateTime = ZonedDateTime.now();
final LocalDate localDate = LocalDate.now();

转Instant

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Date转Instant
Instant dateInstant = date.toInstant();

//Timestamp转Instant
Instant timestampInstant = timestamp.toInstant();

//Calendar转Instant
Instant calendarInstant = calendar.toInstant();

//LocalDateTime转Instant
Instant localDateTimeInstant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();

//ZonedDateTime转Instant
Instant zonedDateTimeInstant = zonedDateTime.toInstant();

//LocalDate转Instant
Instant localDateInstant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();

转LocalDateTime

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Date转LocalDateTime
LocalDateTime dateLocalDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());

//Timestamp转LocalDateTime
LocalDateTime timestampLocalDateTime = timestamp.toLocalDateTime();

//Calendar转LocalDateTime
LocalDateTime calendarLocalDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneOffset.systemDefault());

//Instant转LocalDateTime
LocalDateTime instantLocalDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

//ZonedDateTime转LocalDateTime
LocalDateTime zonedDateTimeLocalDateTime = zonedDateTime.toLocalDateTime();

//LocalDate转LocalDateTime
LocalDateTime localDateLocalDateTime = localDate.atStartOfDay();

转ZonedDateTime

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Date转ZonedDateTime
ZonedDateTime dateZonedDateTime = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());

//Timestamp转ZonedDateTime
ZonedDateTime timestampZonedDateTime = ZonedDateTime.ofInstant(timestamp.toInstant(), ZoneId.systemDefault());

//Calendar转ZonedDateTime
ZonedDateTime calendarZonedDateTime = ZonedDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault());

//Instant转ZonedDateTime
ZonedDateTime instantZonedDateTime = instant.atZone(ZoneId.systemDefault());

//LocalDateTime转ZonedDateTime
ZonedDateTime localDateTimeZonedDateTime = localDateTime.atZone(ZoneId.systemDefault());

//LocalDate转ZonedDateTime
ZonedDateTime localDateZonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());

转Date

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Timestamp转Date
Date timestampDate = new Date(timestamp.getTime());

//Calendar转Date
Date calendarDate = calendar.getTime();

//Instant转Date
Date instantDate = Date.from(instant);

//LocalDateTime转Date
Date localDateTimeDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

//ZonedDateTime转Date
Date zonedDateTimeDate = Date.from(zonedDateTime.toInstant());

//LocalDate转Date
Date localDateDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

转Timestamp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Date转Timestamp
Timestamp dateTimestamp = new Timestamp(date.getTime());

//Calendar转Timestamp
Timestamp calendarTimestamp = new Timestamp(calendar.getTimeInMillis());

//Instant转Timestamp
Timestamp instantTimestamp = Timestamp.from(instant);

//LocalDateTime转Timestamp
Timestamp localDateTimeTimestamp = Timestamp.valueOf(localDateTime);

//ZonedDateTime转Timestamp
Timestamp zonedDateTimeTimestamp = Timestamp.from(zonedDateTime.toInstant());

//LocalDate转Timestamp
Timestamp localDateTimestamp = Timestamp.valueOf(localDate.atStartOfDay());

转Calendar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Date转Calendar
Calendar dateCalendar = Calendar.getInstance();
dateCalendar.setTime(date);

//Timestamp转Calendar
Calendar timestampCalendar = Calendar.getInstance();
timestampCalendar.setTimeInMillis(timestamp.getTime());

//Instant转Calendar
Calendar instantCalendar = GregorianCalendar.from(ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()));

//LocalDateTime转Calendar
Calendar localDateTimeCalendar = GregorianCalendar.from(ZonedDateTime.of(localDateTime, ZoneId.systemDefault()));

//ZonedDateTime转Calendar
Calendar zonedDateTimeInstantCalendar = GregorianCalendar.from(zonedDateTime);

//LocalDate转Calendar
Calendar localDateCalendar = GregorianCalendar.from(localDate.atStartOfDay(ZoneId.systemDefault()));

转LocalDate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Date转LocalDate
LocalDate dateLocalDate = LocalDate.ofInstant(date.toInstant(), ZoneId.systemDefault()); //jdk11

LocalDate dateLocalDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();

//Timestamp转LocalDate
LocalDate timestampLocalDate = timestamp.toLocalDateTime().toLocalDate();

//Calendar转LocalDate
LocalDate calendarLocalDate = LocalDate.ofInstant(calendar.toInstant(), ZoneOffset.systemDefault()); //jdk11

LocalDate calendarLocalDate = LocalDateTime.ofInstant(calendar.toInstant(), ZoneOffset.systemDefault()).toLocalDate();

//Instant转LocalDate
LocalDate instantLocalDate = LocalDate.ofInstant(instant, ZoneId.systemDefault()); //jdk11

LocalDate instantLocalDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();

//LocalDateTime转LocalDate
LocalDate localDateTimeLocalDate = localDateTime.toLocalDate();

//ZonedDateTime转LocalDate
LocalDate zonedDateTimeLocalDate = zonedDateTime.toLocalDate();