java字符串日期类Date和Calendar相互转化及相关常用方法

 更新时间:2023年12月22日 11:58:35   作者:great-sun  
Java语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分,下面这篇文章主要给大家介绍了关于java字符串日期类Date和Calendar相互转化及相关常用方法的相关资料,需要的朋友可以参考下

Java中,可以通过以下方法将字符串转换为Date:

String dateString = "2023-07-28";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(dateString);

在这个例子中,我们将一个字符串类型的日期转换为Date对象。需要注意的是,我们需要使用SimpleDateFormat类来指定日期格式。

同样地,我们也可以将Date转换为字符串:

Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateString = format.format(date);

Java中,可以通过以下方法将Date转换为Calendar:

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

在这个例子中,我们将当前时间的Date对象转换为Calendar对象。需要注意的是,我们需要使用Calendar.getInstance()方法来获取一个Calendar实例。

同样地,我们也可以将Calendar转换为Date:

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();

在这个例子中,我们将当前时间的Calendar对象转换为Date对象。需要注意的是,我们需要使用Calendar.getTime()方法来获取一个Date实例。

除了转换之外,Date和Calendar类还有许多常用的方法。以下是一些常见的方法:

  • Date类方法getTime():返回自1970年1月1日00:00:00 GMT以来的毫秒数。
  • toString():返回一个表示此日期的字符串。
  • before(Date when):如果此日期在when之前,则返回true。
  • after(Date when):如果此日期在when之后,则返回true。
  • Calendar类方法get(int field):返回给定日历字段的值。
  • set(int field, int value):将给定日历字段设置为给定值。
  • add(int field, int amount):将给定的时间量添加到给定的日历字段中。
  • getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
  • toString():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的字符串表示形式

附:加减日期

截止目前已经完成了 String Date Calendar 互转了。(Calendar 到 String 恐怕只能通过 Date 中转一下,我没有发现任何无需借助 Date 的方法)

接下来该实现按格式输入字符串日期,任意加减天数的需求了,用到 Calendar 的成员方法:public abstract void add(int field, int amount).

它能在 field 代表的时间字段上加 amount 个单位(可以为负数)。字段同样使用 Calendar 的静态成员变量。结合例子很容易理解:

public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime().toString());  // Mon Aug 15 18:19:55 CST 2022

    calendar.add(Calendar.YEAR, 2);                     // Mon Aug 15 18:19:55 CST 2024
    calendar.add(Calendar.MONTH, -6);                   // Thu Feb 15 18:19:55 CST 2024
    calendar.add(Calendar.DAY_OF_MONTH, 14);            // Thu Feb 29 18:19:55 CST 2024

    System.out.println(calendar.getTime().toString());  // Thu Feb 29 18:19:55 CST 2024
}

最后,把上面的内容连起来,笔者终于完成了:按指定格式 “yyyyMMdd” 传入字符串与加减天数,返回同样格式字符串的方法:String addDay(String str, int num). 如下:

public class Main {

    /**
     * 对日期加减数天
     *
     * @param yyyyMMdd 形如 "20240228"
     * @param day      形如 2(支持负数)
     * @return 形如 "20240301"
     */
    public static String addDay(String yyyyMMdd, int day) {

        // String to Date
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        Date date;
        try {
            date = format.parse(yyyyMMdd);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

        // Change Date
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, day);
        date = calendar.getTime();

        // Date to String
        yyyyMMdd = format.format(date);

        return yyyyMMdd;
    }

    public static void main(String[] args) {
        System.out.println(addDay("20240228", 2));  // 20240301
    }
}

即使天数很多也没问题:

System.out.println(addDay("20240228", 2333));  // 20300719

也可以完全同理实现加减年/月/时/分/秒,等等,只需更改 field 为 Calendar.XXX 即可,不一而足。

总结

到此这篇关于java字符串日期类Date和Calendar相互转化及相关常用方法的文章就介绍到这了,更多相关java日期类Date和Calendar相互转化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java解析xml之dom解析xml示例分享

    java解析xml之dom解析xml示例分享

    DOM将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息; 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快,下面看使用示例吧
    2014-01-01
  • IDEA自定义Maven archetype的方法步骤

    IDEA自定义Maven archetype的方法步骤

    在创建Maven的项目时我们发现了一个很不方便的问题,就是每次创建Maven的工程的时候,都需要选择一个骨架,本文主要介绍了IDEA自定义Maven archetype的方法步骤,感兴趣的可以了解一下
    2022-03-03
  • SpringBoot中的@EnableConfigurationProperties注解详细解析

    SpringBoot中的@EnableConfigurationProperties注解详细解析

    这篇文章主要介绍了SpringBoot中的@EnableConfigurationProperties注解详细解析,如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component或者实现了@Component的其他注解,那么在IOC容器中是获取不到properties 配置文件转化的bean,需要的朋友可以参考下
    2024-01-01
  • Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法

    Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法

    这篇文章主要介绍了Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • spring cloud将spring boot服务注册到Eureka Server上的方法

    spring cloud将spring boot服务注册到Eureka Server上的方法

    本篇文章主要介绍了spring cloud将spring boot服务注册到Eureka Server上的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java中关键字final finally finalize的区别介绍

    Java中关键字final finally finalize的区别介绍

    这篇文章主要给大家分享的是 Java中final,finally,finalize 到底有什么区别,文章围绕final,finally,finalize的相关资料展开详细内容,具有一定的参考的价值,需要的朋友可以参考一下
    2022-04-04
  • SpringBoot 过滤器, 拦截器, 监听器的具体使用

    SpringBoot 过滤器, 拦截器, 监听器的具体使用

    本文主要介绍了SpringBoot 过滤器, 拦截器, 监听器的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Ehcache简介_动力节点Java学院整理

    Ehcache简介_动力节点Java学院整理

    这篇文章主要介绍了Ehcache简介,使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存
    2017-07-07
  • Dom4j解析XML_动力节点Java学院整理

    Dom4j解析XML_动力节点Java学院整理

    这篇文章主要介绍了Dom4j解析XML,dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的,有兴趣的可以了解一下
    2017-07-07
  • Spring Boot整合Mybatis Plus和Swagger2的教程详解

    Spring Boot整合Mybatis Plus和Swagger2的教程详解

    这篇文章主要介绍了Spring Boot整合Mybatis Plus和Swagger2的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论