一:概述

 在Java编程中,时间戳通常以long类型表示,它表示自1970年1月1日00:00:00 UTC以来的毫秒数。在进行时间处理时,有时我们不需要精确到毫秒的时间戳,而是需要将毫秒部分去掉,只保留秒或者分钟等更粗略的时间单位。本文将介绍几种在Java中去除时间戳毫秒部分的方法。

二:具体说明

<1>使用时间日期库

java.time) Java 8引入了新的时间日期库(java.time),这个库提供了更加完善和易用的日期时间API。在这个库中,我们可以使用Instant类来表示时间戳,并通过Instant类的toEpochMilli()方法获取毫秒值,再转换为其他时间单位。

案例一:使用Instant类转换为String
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class RemoveMilliSeconds2 {
    public static void main(String[] args) {

        // 获取当前时间的时间戳(毫秒)
        long millis = Instant.now().toEpochMilli();

        // 去除毫秒,转换为秒
        long seconds = millis / 1000;

        // 格式化输出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedTime = Instant.ofEpochMilli(seconds * 1000).atZone(ZoneId.systemDefault()).format(formatter);

        System.out.println("Formatted time without milliseconds: " + formattedTime);

    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

java 时间戳去除毫秒_java

在这个案例中,我们首先获取当前时间的Instant对象,并将其转换为毫秒数。然后,通过除以1000,去掉毫秒部分,得到秒数。最后,我们使用DateTimeFormatter将得到的秒数转换为指定格式的时间字符串。

<2>使用SimpleDateFormat

SimpleDateFormat是Java早期版本中用于日期格式化的类。虽然它不属于新的时间日期库,但在一些老项目中仍然在使用。

案例二:使用SimpleDateFormat格式化时间戳
import java.text.SimpleDateFormat;
import java.util.*;

public class RemoveMilliSeconds1 {
    public static void main(String[] args) {
        // 获取当前时间的时间戳(毫秒)
        long millis = System.currentTimeMillis();

        // 去除毫秒,转换为秒
        long seconds = millis / 1000;

        // 格式化输出
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedTime = new Date(seconds * 1000L).toString();

        System.out.println("Formatted time without milliseconds: " + formattedTime);
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

java 时间戳去除毫秒_Time_02

在这个案例中,我们使用System.currentTimeMillis()获取当前时间的时间戳,然后转换为秒。接着,我们使用SimpleDateFormat将得到的秒数格式化为指定格式的时间字符串。

<3>使用自定义格式化

除了使用内置的日期时间库和格式化类外,我们还可以自定义格式化方法来去除时间戳的毫秒部分。 

案例三:自定义格式化方法
public class RemoveMilliSeconds3 {
  public static void main(String[] args) {
      // 获取当前时间的时间戳(毫秒)
      long millis = System.currentTimeMillis();

      // 去除毫秒,转换为秒
      long seconds = millis / 1000;

      // 自定义格式化输出
      DecimalFormat df = new DecimalFormat("#,###,###");
      String formattedTime = df.format(seconds) + " seconds since 1970-01-01 00:00:00 UTC";

      System.out.println("Formatted time without milliseconds: " + formattedTime);
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

java 时间戳去除毫秒_java_03

在这个案例中,我们使用DecimalFormat类来格式化时间戳的秒数。通过设置合适的格式,我们可以将数字转换为易于阅读的形式。这里,我们使用了#,###,###格式化模式来分隔数字的千位,使其更加清晰。

<4>使用TimeUnit

Java的java.util.concurrent.TimeUnit类提供了一种方便的方式来转换不同时间单位。

 案例四:使用TimeUnit类转换时间单位
public static void main(String[] args) {
    // 获取当前时间的时间戳(毫秒)
    long millis = System.currentTimeMillis();

    // 去除毫秒,转换为秒
    long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);

    // 格式化输出
    String formattedTime = TimeUnit.SECONDS.toHours(seconds) + " hours, "
            + TimeUnit.SECONDS.toMinutes(seconds) % TimeUnit.HOURS.toMinutes(1)
            + " minutes, " + TimeUnit.SECONDS.toSeconds(seconds) % TimeUnit.MINUTES.toSeconds(1)
            + " seconds";
    System.out.println("Formatted time without milliseconds: " + formattedTime);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

java 时间戳去除毫秒_时间戳_04

<4>总结

本文介绍了几种在Java中去除时间戳毫秒部分的方法。首先,我们使用了新的时间日期库(java.time),通过Instant类和DateTimeFormatter进行转换和格式化。接着,我们展示了如何使用老版本的SimpleDateFormat类进行格式化。此外,我们还自定义了一个格式化方法,使用DecimalFormat类来格式化数字。最后,我们使用了TimeUnit类来转换时间单位。这些方法可以帮助我们在Java程序中轻松地处理和格式化时间戳,根据需要选择合适的方法。