开发者

Java中的时间戳各种操作方法详解

开发者 https://www.devze.com 2024-10-17 11:45 出处:网络 作者: 路人借问遥招手
目录一.何为Java时间戳二.获取当前时间戳1.使用System.currentTimeMillis()方法2. 使用java.util.Date 类3. 使用java.sql.Timestamp 类4.Java 8中的 java.time 包三.格式化时间戳1.使用&nb
目录
  • 一.何为Java时间戳
  • 二.获取当前时间戳
    • 1.使用System.currentTimeMillis()方法
    • 2. 使用java.util.Date 类
    • 3. 使用java.sql.Timestamp 类
    • 4.Java 8中的 java.time 包
  • 三.格式化时间戳
    • 1.使用 SimpleDateFormat
    • 2.使用 DateTimeFormatter
  • 四.时间戳与字符串的转换
    • 1.将时间戳转换为字符串
    • 2.将字符串转换为时间戳
  • 五.时区处理
    • 六.时间戳的加减
      • 总结 

        一.何为Java时间戳

        在Java中,时间戳通常指的是自1970年1月1日午夜(UTC)以来的毫秒数。

        这个概念在Java中主要通过java.util.Date类和java.sql.Timestamp类来表示

        而在Java 8及以后的版本中,引入了新的日期时间API,即java.time包,提供了更多的功能和灵活性。

        二.获取当前时间戳

        1.使用System.currentTimeMillis()方法

        long currentTimestamp = System.currentTimeMillis();
        

        2. 使用java.util.Date 类

        java.util.Date类可以用来表示特定的瞬间,它包含了自1970年1月1日午夜(UTC)以来的毫秒数。

        // 创建一个Date对象表示当前时间
        Date now = new Date();
        long timestamp = now.getTime(); // 获取时间戳
        
        // 从一个已知的时间戳创建Date对象
        long timestamp = ...编程 // 假设你有一个时间戳
        Date date = new Date(timestamp);
        

        3. 使用java.sql.Timestamp 类

        java.sql.Timestamp类是java.util.Date的一个子类,它提供了更高精度的时间表示,包括纳秒

        // 创建一个Timestamp对象表示当前时间
        Timestamp now = new Timestamp(System.currentTimeMillis());
        
        // 从一个已知的时间戳创建Timestamp对象
        long timestamp = ... // 假设你有一个时间戳
        Timestamp ts = new Timestamp(timestamp);
        

        4.Java 8中的 java.time 包

        Java 8引入了一个新的日期时间API,提供了更好的处理日期和时间的类。其中,Instant类可以用来表示时间戳。

        // 获取当前时间的Instant对象
        Instant now = Instant.now();
        long timestamp = now.toEpochMilli(); // 获取时间戳
        
        // 从一个已知的时间戳创建Instant对象
        long timestamp = ... // 假设你有一个时间戳
        Instant instant = Instant.ofEpochMilli(timestamp);
        

        三.格式化时间戳

        要将时间戳转换为可读的日期时间格式,可以使用SimpleDateFormat(Java 8之前)或DateTimeFormatter(Java 8及以后)。

        1.使用 SimpleDateFormat

        // 假设你有一个时间戳
        long timestamp = ...
        
        // 创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 将时间戳转换为Date对象,然后格式化
        String formattedDate = sdf.format(new Date(timestamp));
        System.out.println(formattedDate);
        

        2.使用 DateTimeFormatter

        // 假设你有一个时间戳
        long timestamp = ...
        
        // 创建DateTimeFormatter对象
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        
        // 将时间戳转换为Instant对象,然后转换为LocalDateTime对象,最后格式化
        Instant instant = Instant.ofEpochMilli(timestamp);
        LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        String formattedDate = ldt.format(dtf);
        System.out.println(formattedDate);
        

        四.时间戳与字符串的转换

        1.将时间戳转换为字符串

        // 假设你有一个时间戳
        long timestamp = ...
        
        // 使用SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdf.format(new Date(timestamp));
        
        // 使用DateTimeFormatter
        DateTimeFormatter dtf = DateTimeFo编程客栈rmatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        Instant instant = Instant.ofEpochMilli(timestamp);
        LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        String dateStr = ldt.format(dtf);
        

        2.将字符串转换为编程客栈时间戳

        // 假设你有一个日期时间的字符js串表示
        String dateStr = "2023-04-01 12:34:56";
        
        // 使用SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = sdf.parse(dateStr);
            long timestamp = date.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        // 使用DateTimeFormatter
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime ldt = LocalDateTime.parse(dateStr, dtf);
        Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
        long timestamp = instant.toEpochMilli();
        

        五.时区处理

        在处理时间戳时,时区是一个非常重要的因素。Java中的ZoneId类可以用来表示不同的时区。

        // 获取当前时区的偏移量
        ZoneId currentZone = ZoneId.systemDefault();
        ZonedDateTime zdt = ZonedDateTime.now(currentZone);
        long offsetInMillis = zdt.getOffset().getTotalSeconds() * 1000;
        

        六.时间戳的加减

        要对时间戳进行加减操作,可以使用java.time.Duration类或直接对毫秒数进行加减。

        // 假设你有一个时间戳
        long timestamp = ...
        
        // 增加一小时的时间戳
        Instant instant = Instant.ofEpochMilli(timestamp);
        Duration oneHour = Duration.ofHours(1);
        Instant newInstant = instant.plus(oneHour);
        long newTimestamp = newInstant.toEpochMilli();
        
        // 或者直接对毫秒数进行加减
        long newTimestamp = timestamp + (60 * 60 * 1000); // 增加一小时

        总结 

        到此这python篇关于Java中时间戳各种操作方法详解的文章就介绍到这了,更多相关Java中时间戳内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号