详解Java关于时间格式化的方法

关于Java中的时间格式化,一般使用SimpleDateFormat类实现。下面我将详细讲解如何使用SimpleDateFormat类对时间进行格式化,并且还会提供两个示例。

一、SimpleDateFormat类的基本用法

SimpleDateFormat类可以把日期时间格式化成需要的字符串形式。具体用法为先创建一个SimpleDateFormat对象,然后调用其format()方法即可。

格式化所用格式的字母含义:

  • y:年
  • M:月
  • d:日
  • H:时(24小时制)
  • h:时(12小时制)
  • m:分
  • s:秒
  • S:毫秒

如下代码就是使用SimpleDateFormat类对时间进行格式化的基本示例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    public static String formatDate(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    public static void main(String[] args) {
        String format1 = "yyyy-MM-dd HH:mm:ss";
        String format2 = "yyyy/MM/dd HH:mm:ss.SSS";
        Date date = new Date();
        System.out.println(formatDate(date, format1));
        System.out.println(formatDate(date, format2));
    }
}

在上面的代码中,我们首先定义了一个formatDate()方法,用于接收一个日期和一个格式参数,然后返回对应格式的日期字符串。在main()方法中,我们定义了两个格式,一个是“年-月-日 时:分:秒”,另一个是“年/月/日 时:分:秒.毫秒”,然后获取当前时间,分别使用这两个格式来格式化日期,并打印输出结果:

2022-02-23 15:40:28
2022/02/23 15:40:28.272

二、SimpleDateFormat类的常用格式化方法

在SimpleDateFormat类中,除了format()方法之外,还有很多其他常用的格式化方法。

  1. 将字符串转化为日期

使用SimpleDateFormat类的parse()方法可以将字符串解析为Date对象。例如:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    public static Date parseDate(String dateStr, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(dateStr);
    }

    public static void main(String[] args) throws ParseException {
        String format = "yyyy-MM-dd HH:mm:ss";
        String dateStr = "2022-02-23 15:40:28";
        Date date = parseDate(dateStr, format);
        System.out.println(date);
    }
}

在上面的代码中,我们定义了一个parseDate()方法,用于将字符串解析为日期对象。在main()方法中,我们定义了一个格式为“年-月-日 时:分:秒”的日期字符串,然后调用parseDate()方法将其解析为日期对象,并将结果打印输出:

Wed Feb 23 15:40:28 CST 2022
  1. 设置时区

使用SimpleDateFormat类的setTimeZone()方法可以设置时区。例如:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

public class DateUtil {
    public static String formatWithTimeZone(Calendar calendar, String format, TimeZone timeZone) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(timeZone);
        return sdf.format(calendar.getTime());
    }

    public static void main(String[] args) {
        String format = "yyyy-MM-dd HH:mm:ss";
        Calendar calendar = Calendar.getInstance();
        TimeZone timeZone = TimeZone.getTimeZone("GMT+8");
        System.out.println(formatWithTimeZone(calendar, format, timeZone));
    }
}

在上面的代码中,我们定义了一个formatWithTimeZone()方法,用于将日历对象格式化为指定格式的字符串。此外,我们还定义了一个时区对象,并将其设置为东八区的时区(GMT+8)。然后在main()方法中,获取当前的日历对象,并使用定义的时区对象将其格式化为指定格式的字符串,并将其打印输出:

2022-02-23 16:07:09

三、示例

接下来,我用两个示例来说明如何使用SimpleDateFormat类进行时间格式化。

示例一:计算时间差

下面的代码展示了如何使用SimpleDateFormat类计算两个日期之间的时间差:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    public static long getBetweenDays(String dateStr1, String dateStr2, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date1 = sdf.parse(dateStr1);
        Date date2 = sdf.parse(dateStr2);
        long betweenDays = (date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24);
        return Math.abs(betweenDays);
    }

    public static void main(String[] args) throws ParseException {
        String format = "yyyy-MM-dd";
        String dateStr1 = "2022-02-23";
        String dateStr2 = "2022-02-01";
        long betweenDays = getBetweenDays(dateStr1, dateStr2, format);
        System.out.println(betweenDays);
    }
}

在上面的代码中,我们定义了一个getBetweenDays()方法,用于计算两个日期相差的天数。首先,我们使用SimpleDateFormat类将两个日期字符串解析为Date对象,然后计算它们之间的时间差,并将其转换为天数。在main()方法中,我们定义了两个日期字符串,分别是“2022-02-23”和“2022-02-01”,然后调用getBetweenDays()方法计算它们之间的天数差,并将结果打印输出:

22

示例二:获取指定月份的最后一天

下面的代码展示了如何使用SimpleDateFormat类获取指定月份的最后一天:

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateUtil {
    public static int getLastDayOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        return lastDay;
    }

    public static String getLastDayOfMonth(String dateStr, String format) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sdf.parse(dateStr));
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int lastDay = getLastDayOfMonth(year, month);
        return sdf.format(sdf.parse(dateStr).getTime() + (lastDay - Integer.parseInt(sdf.format(sdf.parse(dateStr)).substring(dateStr.lastIndexOf("-") + 1))) * 24 * 3600 * 1000);
    }

    public static void main(String[] args) throws Exception {
        String format = "yyyy-MM-dd";
        String dateStr = "2022-02-23";
        String lastDayOfMonth = getLastDayOfMonth(dateStr, format);
        System.out.println(lastDayOfMonth);
    }
}

在上面的代码中,我们定义了一个getLastDayOfMonth()方法,用于获取指定月份的最后一天。首先,我们使用Calendar类将传入的年份和月份设置为日历对象的属性,然后使用getActualMaximum()方法获取当月的最大天数。接着,我们将传入的日期字符串解析为Date对象,并使用Calendar类获取年份和月份,然后调用getLastDayOfMonth()方法获取当月的最后一天,并将结果返回。在main()方法中,我们定义了一个日期字符串“2022-02-23”,然后调用getLastDayOfMonth()方法获取当月的最后一天,并将结果打印输出:

2022-02-28

以上就是详解Java关于时间格式化的方法的完整攻略,包含了SimpleDateFormat类的基本用法、常用格式化方法、以及两个示例的详细讲解。

阅读剩余 75%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java关于时间格式化的方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java 垃圾回收机制以及经典垃圾回收器详解

    Java 垃圾回收机制详解 什么是垃圾回收机制 在 Java 程序中进行内存管理时,需要动态地分配和回收内存。Java 的垃圾回收机制(Garbage Collection,GC)是自动进行的内存管理操作,它负责释放不再被引用的对象占用的内存,从而减少 GC 的内存压力,提高程序的性能。 Java 的垃圾回收机制的实现原理 Java 垃圾回收机制的实现原理是…

    Java 2023年5月26日
    00
  • Java SpringBoot 获取接口实现类汇总

    下面我会详细讲解“Java SpringBoot 获取接口实现类汇总”的攻略,分为以下几个步骤: 定义接口及实现类 使用注解@Autowired注入实现类 使用注解@ComponentScan扫描实现类 获取接口实现类列表 接下来具体讲述每个步骤,并提供两个示例。 1. 定义接口及实现类 首先,我们需要定义一个接口,并创建其的实现类。如下: public i…

    Java 2023年5月19日
    00
  • 使用 Apache 反向代理的设置技巧

    下面我将为大家详细介绍使用 Apache 反向代理的设置技巧的完整攻略。 一、反向代理的基本概念 反向代理是一种代理模式,其代理对象不是客户端,而是服务端。它可以将多个 web 服务器虚拟为一个地址,以便统一代理。客户端访问这个地址,由反向代理服务器将请求转发到真正的服务器上去,并将响应返回给客户端。 反向代理的优点包括:- 可以在前端部署负载均衡;- 可以…

    Java 2023年6月2日
    00
  • 在Mac OS上安装Tomcat服务器的教程

    在Mac OS上安装Tomcat服务器的教程 简介 Tomcat是一个基于Java语言实现的Web服务器,也可作为一个Servlet容器运行,目前是最为流行的Web服务器之一。在Mac OS操作系统上安装Tomcat服务器,可以方便地搭建Web应用程序,供其他用户访问。本文将介绍如何在Mac OS上安装Tomcat服务器的详细过程。 步骤一:下载Tomcat…

    Java 2023年5月19日
    00
  • spring security结合jwt实现用户重复登录处理

    下面我会详细讲解“spring security结合jwt实现用户重复登录处理”的完整攻略。 概述 在使用JWT(Json Web Token)作为身份认证的情况下,用户可以随时提供令牌来访问应用程序,这使得应用程序无法管理用户的会话状态,例如强制注销用户或在重复登录情况下限制访问。为了解决这个问题,我们可以使用Spring Security来管理用户登录状…

    Java 2023年6月3日
    00
  • Java线程中sleep和wait的区别详细介绍

    下面详细讲解Java线程中sleep和wait的区别。 sleep和wait的区别 等待方式不同 sleep()方法是线程的静态方法,通过该方法可以使当前线程暂停指定的时间,但不会释放已经持有的锁。wait()方法是Object类中的方法,通过该方法可以使线程等待其它线程通知其被唤醒,同时会释放当前持有的锁。 调用位置不同 sleep()方法可以在任何位置调…

    Java 2023年5月19日
    00
  • java LinkedList类详解及实例代码

    Java LinkedList 类详解及实例代码 介绍 Java中的LinkedList类是一个双向链表的实现,是List接口的有序集合。LinkedList类提供了方便的操作链表的方法,可以很容易地实现添加、删除、插入以及访问节点等操作。 以下是创建一个LinkedList的示例: LinkedList<String> linkedList =…

    Java 2023年5月23日
    00
  • Java代码中如何设置输出字符集为UTF-8

    在Java代码中,我们可以通过设置输出流的字符集来确保我们的输出内容符合我们在程序中预期的编码方式。下面是关于如何设置Java代码输出字符集为UTF-8的完整攻略: 1. 设置System.out的字符集为UTF-8 设置System.out的字符集为UTF-8的方法是通过调用System.setOut()方法,并将PrintWriter的实例传递给该方法。…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部