本文介绍了在Java8中如何使用LocalDateTime进行时间戳转换,包括获取毫秒和秒数,以及与String和Date对象之间的相互转换。所有转换都在东8区(北京时间)的时区下进行,确保了时间的一致性。示例代码详细展示了转换的方法,对于在Java8中处理时间的开发者来说非常实用。 摘要由CSDN通过智能技术生成

Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转

LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转

文中都使用的时区都是东8区,也就是北京时间。这是为了防止服务器设置时区错误时导致时间不对,如果您是其他时区,请自行修改

1.LocalDateTime获取毫秒数

//获取秒数
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
//获取毫秒数
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

2.LocalDateTime与String互转

//时间转字符串格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
String dateTime = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
//字符串转时间
String dateTimeStr = "2018-07-28 14:11:15";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);

3.Date与LocalDateTime互转

//将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区
public static LocalDateTime dateConvertToLocalDateTime(Date date) {
return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
//将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区
public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
* 测试转换是否正确
@Test
public void testDateConvertToLocalDateTime() {
Date date = DateUtils.parseDate("2018-08-01 21:22:22", DateUtils.DATE_YMDHMS);
LocalDateTime localDateTime = DateUtils.dateConvertToLocalDateTime(date);
Long localDateTimeSecond = localDateTime.toEpochSecond(ZoneOffset.of("+8"));
Long dateSecond = date.toInstant().atOffset(ZoneOffset.of("+8")).toEpochSecond();
Assert.assertTrue(dateSecond.equals(localDateTimeSecond));
    public static void main(String[] args) throws InterruptedException {
        //获取当前时间并转成LocalDateTime
        Date date = new Date();
	 * @return java.util.Date
	public static Date localDateToDate(LocalDate localDate) {
		return Date.from(localDate.atStartOfDay(ZoneId.syste...
				
1.LocalDateTime获取毫秒数 //获取秒数 Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); //获取毫秒数 Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); 2.LocalDateTime与String互转 //时间转字符串格式化 DateTimeFormatter format
//时间转字符串格式化 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println(now); select sysdate from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual; select to_char(sysdate, 'yyyy' ) from dual; --年 select to_char(sysdate, 'MM' ) fr
LocalDateTime 相关操作 localDataTime获取秒级时间戳(ZoneOffset表示偏移量,北京时间是+8)LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"); localDataTime获取毫秒秒级时间戳LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); localDateTime转换成字符串 //时间转换成我们需要时间格式 DateTim
//当前时间 LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt);//2022-05-15T15:01:21.451937400 // 按照给定的字符,格式化为时间对象 LocalDateTime ldt2 = Loc