【Java】 # 对于日期Date类的相关操作
发布日期:2021-05-10 18:52:10 浏览次数:10 分类:精选文章

本文共 2302 字,大约阅读时间需要 7 分钟。

1. Date和String类型的转换

1.1 String 转 Date

使用 parse 方法,参数为 字符串String,需要进行异常处理

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse("20210126");System.out.println(date);

1.2 Date 转 String

使用 format 方法,参数为 日期Date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date());System.out.println(time);

 

2. 对日期进行加减运算

利用 java.text包下的 SimpleDateFormat 类

import java.util.Date;import java.util.Calendar;import java.text.SimpleDateFormat;public class DateCalcUtil {    public static void main(String[] args) throws Exception {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        String str = "20210126";        Date date = sdf.parse(str);        Calendar time = Calendar.getInstance();        time.setTime(date);        //日期减1年        time.add(Calendar.YEAR, -1);        //日期加3个月        time.add(Calendar.MONTH, 3);        //日期加10天        time.add(Calendar.DAY_OF_YEAR, 10);        Date resTime = time.getTime();        String resStr = sdf.format(resTime);        System.out.println(reStr);    }}

 

3. 比较两个字符串日期的大小

3.1 直接进行字符串的比较

要求两个日期格式一样

String beginTime = "2021-01-26 07:19:23";String endTime = "2021-01-26 17:19:29";if (beginTime.compareTo(endTime) < 0){ // 代表beginTime 小于 endTime    //TODO}

3.2 将日期转换为长整型

过于繁琐,要求两个日期格式一样

String beginTime = "2021-01-26 07:19:23";String endTime = "2021-01-26 17:19:29";long begin = Long.valueOf(beginTime.replaceAll("-", "").replaceAll(":", "").replace(" ", ""));long end = Long.valueOf(endTime.replaceAll("-", "").replaceAll(":", "").replace(" ", ""));if (begin < end){    //TODO}

3.3 使用SimpleDateFormat转换

String beginTime = "2021-01-26 07:19:23";String endTime = "2021-01-26 17:19:29";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date bt = sdf.parse(beginTime);  // 需处理异常Date et = sdf.parse(endTime); if (bt.before(et)){     // TODO}

注:如果是Date类型的日期,直接使用 before after 比较即可

 

4. 日期转换可能会出现的异常 Cannot format given Object as a Date

错误信息:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date    at java.text.DateFormat.format(Unknown Source)    at java.text.Format.format(Unknown Source)    at .....QxtMessageUtils.main(QxtMessageUtils.java:210)

原因:parse 或者 format 参数传递错误

  • parse 的作用是将 字符串 转换成 Date值
  • format 的作用是将 Date值 转换成 字符串

 

上一篇:【IDEA】 # 使用Ctrl + / 自动注释时的缩进问题
下一篇:【jQuery】 # jQuery和JSTL对select标签的操作

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月24日 21时19分57秒