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中的JPA实体关系:JPA一对一,一对多(多对一),多对多
Java Persistence API(JPA)是Java平台上的一个对象关系映射(ORM)规范,用于简化数据库操作,其中实体关系的映射是核心内容之一,本文将深入浅出地探讨JPA中的三种基本实体关系类型:一对一、一对多、多对多,揭示常见问题、易错点及其避免策略,希望能帮助大家2024-06-06一篇超详细的SpringBoot整合MybatisPlus的文章
这篇文章主要介绍了springboot整合Mybatis-plus的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-07-07Spring+SpringMVC配置事务管理无效原因及解决办法详解
这篇文章主要介绍了Spring+SpringMVC配置事务管理无效原因及解决办法详解,具有一定借鉴价值,需要的朋友可以参考下2017-12-12
最新评论