在过去,我们使用Date
和Calendar
API 来表示和操作日期。
java.util.Date
– 日期和时间,使用默认时区打印。java.util.Calendar
- 日期和时间,更多操作日期的方法。java.text.SimpleDateFormat
– 格式化(日期 -> 字符串),解析(字符串 -> 日期)日期和日历。
Java 8 在包中创建了一系列新的日期和时间 API java.time
。
java.time.LocalDate
– 没有时间的日期,没有时区。java.time.LocalTime
– 没有日期的时间,没有时区。java.time.LocalDateTime
– 日期和时间,没有时区。java.time.ZonedDateTime
– 日期和时间,带时区。java.time.DateTimeFormatter
– java.time 的格式化(日期 -> 字符串),解析(字符串 -> 日期)。java.time.Instant
– 机器的日期和时间,自 Unix 纪元时间以来经过的秒数(UTC 时间 1970 年 1 月 1 日午夜)
1. 获取当前时间
1. java.time.LocalDate
对于java.time.LocalDate
, 用于LocalDate.now()
获取没有时区的当前日期,并使用DateTimeFormatter
.进行格式化。
public class LocalDateExample {
public static void main(String[] args) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("uuuu/MM/dd");
LocalDate localDate = LocalDate.now();
String format = dateTimeFormatter.format(localDate);
// 2022/06/02
System.out.println(format);
}
}
2. java.time.LocalTime
对于java.time.LocalTime
, 用于LocalDate.now()
获取没有时区的当前时间,并使用DateTimeFormatter
进行格式化。
public class LocalTimeExample {
public static void main(String[] args) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime localTime = LocalTime.now();
// 13:04:02
System.out.println(dateTimeFormatter.format(localTime));
}
}
3. java.time.LocalDateTime
对于java.time.LocalDateTime
, 用于LocalDateTime.now()
获取没有时区的当前日期时间,并使用DateTimeFormatter
格式化。
public class LocalDateTimeExample {
public static void main(String[] args) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
// 2022/06/03 13:04:48
System.out.println(dateTimeFormatter.format(now));
}
}
4. java.time.ZonedDateTime
对于java.time.ZonedDateTime
, 用于ZonedDateTime.now()
获取系统默认时区或指定时区的当前日期时间。
public class ZonedDateTimeExample {
public static void main(String[] args) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
// Get default time zone
System.out.println(ZoneOffset.systemDefault()); // Asia/Singapore
System.out.println(OffsetDateTime.now().getOffset()); // +08:00
// get current date time, with +08:00
ZonedDateTime now = ZonedDateTime.now();
System.out.println(dateTimeFormatter.format(now)); // 2022/06/03 13:17:30
}
}
5. java.time.Instant
对于java.time.Instant
, 用于Instant.now()
获取自Unix 纪元时间(UTC 时间 1970 年 1 月 1 日午夜)以来经过的秒数,然后转换为其他java.time.*
日期时间类。
public class InstantExample {
public static void main(String[] args) {
DateTimeFormatter dtfDateTime = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
// seconds passed since the Unix epoch time (midnight of January 1, 1970 UTC)
Instant now = Instant.now();
// convert Instant to LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());
System.out.println(dtfDateTime.format(localDateTime)); // 2022/06/03 13:23:24
}
}
6. java.util.Date(旧版)
对于 java.util.Date
,使用new Date()
或new Date(System.currentTimeMillis()
获取当前日期时间,并使用SimpleDateFormat
进行格式化。
public class DateExample {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(simpleDateFormat.format(date)); // 2022/06/03 13:11:02
Date date1 = new Date(System.currentTimeMillis());
System.out.println(simpleDateFormat.format(date1)); // 2022/06/03 13:11:02
}
}
7. java.util.Calendar(旧版)
对于 java.util.Calendar
,用于Calendar.getInstance()
获取当前日期时间,并使用SimpleDateFormat
进行格式化。
public class CalendarExample {
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
System.out.println(dateFormat.format(calendar.getTime())); // 2022/06/03 13:14:09
}
}
2. 获取当前时间戳
1. java时间戳示例(旧版)
public class TimeStampExample {
private static final SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
private static final SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
private static final SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
// method 1
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp); // 2022-06-03 13:32:03.217
System.out.println(timestamp.getTime()); // 1654234323217
// method 2 - via Date
Date date = new Date();
Timestamp timestamp1 = new Timestamp(date.getTime());
System.out.println(timestamp1.getTime()); // 1654234323217
System.out.println(sdf1.format(timestamp)); // 2022.06.03.13.32.03
System.out.println(sdf2.format(timestamp)); // 2022-06-03T13:32:03.217+08:00
System.out.println(sdf3.format(timestamp)); // 2022-06-03 13:32:03
}
}
2. 将 Instant 转换为时间戳
public class InstantExample {
public static void main(String[] args) {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp); // 2022-06-03 13:35:36.842
System.out.println(timestamp.getTime()); // 1654234536842
// Convert Timestamp to Instant
Instant instant = timestamp.toInstant();
System.out.println(instant); // 2022-06-03T05:35:36.842Z
System.out.println(instant.toEpochMilli()); // 1654234536842
// Convert Instant to Timestamp
Timestamp tsFromInstant = Timestamp.from(instant);
System.out.println(tsFromInstant.getTime()); // 1654234536842
}
}
相关文章
暂无评论...