当前位置: 首页 > news >正文

DateFormat与日期处理

文章目录

  • 常见日期格式模式
    • 使用 SimpleDateFormat 格式化日期
    • Action 类中的日期格式化
  • 解析字符串为日期
    • 示例:字符串转日期
    • 获取当前日期和时间
    • 日期比较
    • * 字符串与日期的相互转换
    • 其他方法
  • 总结


常见日期格式模式

java.util.Date 是 Java 中用于表示特定时间点的类,默认以毫秒为单位记录从 1970 年 1 月 1 日 00:00:00 GMT 开始的时间。

模式字符描述示例
y年份yyyy 表示 4 位年份
M月份(从 1 开始)MM 表示两位月份
d日期dd 表示两位日期
H小时(24 小时制)HH 表示两位小时
h小时(12 小时制)hh 表示两位小时
m分钟mm 表示两位分钟
sss 表示两位秒数
S毫秒SSS 表示三位毫秒
E星期几EEE 表示星期
a上午/下午标志AMPM

使用 SimpleDateFormat 格式化日期

SimpleDateFormat 是 Java 中用于解析和格式化日期的类。它允许开发者定义自定义的日期格式,可以将 Date 对象转换为字符串或反之。

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

public class DateFormatExample {
    public static void main(String[] args) {
        // 当前时间
        Date currentDate = new Date();

        // 定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 格式化日期为字符串
        String formattedDate = sdf.format(currentDate);

        // 输出结果
        System.out.println("格式化后的日期: " + formattedDate);
    }
}

输出结果:

格式化后的日期: 2025-02-19 16:45:30

Action 类中的日期格式化

public class DateFormatExample {
    public static void main(String[] args) {
        // 1. 创建 Date 对象(假设从数据库获取)
        Date date = new Date();

        // 2. 定义 DateFormat(指定格式)
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        // 3. 格式化日期为字符串
        String formattedDate = dateFormat.format(date);
        System.out.println("格式化日期: " + formattedDate); // 输出如:2023-10-01

        // 4. 解析字符串为 Date(反向操作)
        try {
            Date parsedDate = dateFormat.parse("2023-12-31");
            System.out.println("解析日期: " + parsedDate); // 输出:Sat Dec 31 00:00:00 CST 2023
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解析字符串为日期

除了格式化日期为字符串,SimpleDateFormat 还可以将字符串解析为 Date 对象。

示例:字符串转日期

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

public class ParseDateExample {
    public static void main(String[] args) {
        // 定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        try {
            // 字符串转日期
            String dateStr = "2025-02-19";
            Date parsedDate = sdf.parse(dateStr);

            // 输出结果
            System.out.println("解析后的日期: " + parsedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

输出结果:

解析后的日期: Wed Feb 19 00:00:00 CST 2025

获取当前日期和时间

  • 构造方法: new Date()
    创建一个表示当前日期和时间的 Date 对象。

示例:

Date currentDate = new Date();
System.out.println(currentDate); // 输出当前日期和时间

日期比较

  • after(Date when)
    判断当前日期是否在指定日期之后,返回布尔值。

  • before(Date when)
    判断当前日期是否在指定日期之前,返回布尔值。

  • compareTo(Date anotherDate)
    比较两个日期对象,返回整数值:

    • 如果当前日期晚于指定日期,返回正数。
    • 如果当前日期早于指定日期,返回负数。
    • 如果两个日期相等,返回 0。

示例:

Date date1 = new Date();
Date date2 = new Date(date1.getTime() + 60000); // 当前时间加 1 分钟

System.out.println(date1.after(date2)); // false
System.out.println(date1.before(date2)); // true
System.out.println(date1.compareTo(date2)); // 负数

* 字符串与日期的相互转换

通过 SimpleDateFormat 类实现字符串与日期的相互转换。

  1. 创建 SimpleDateFormat 对象:
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1. 日期转字符串(format 方法):
   Date date = new Date();
   String formattedDate = sdf.format(date);
   System.out.println(formattedDate); // 输出格式化后的字符串
  1. 字符串转日期(parse 方法):
   String dateString = "2025-02-19 16:45:30";
   try {
       Date parsedDate = sdf.parse(dateString);
       System.out.println(parsedDate); // 输出解析后的日期
   } catch (Exception e) {
       e.printStackTrace();
   }

其他方法

  • equals(Object obj)
    判断两个日期对象是否相等。

  • clone()
    创建并返回当前日期对象的副本。

  • getTimezoneOffset()(已过时)
    返回当前日期与 UTC 时间之间的时间差(以分钟为单位)。

  • getDay()getMonth()getYear()(已过时)
    获取星期几、月份和年份。这些方法已被弃用,建议使用 Calendar 类替代。

示例:

Date date = new Date();
System.out.println(date.getDay()); // 星期几(0 表示周日)
System.out.println(date.getMonth()); // 月份(0 表示一月)
System.out.println(date.getYear()); // 年份(1900 年为基准)

总结

dateFormat.format(testVO.getCreateDate());

CreateDateDate类型,只要字段是Date类型就要用dateFormat.format,不是Date类型即便是日期也不用dateFormat.format

否则会有下面报错:

java.lang.IllegalArgumentException: 
Can not find a java.io.InputStream with the name [exportExcelOut] in the invocation stack. 
Check the <param name="inputName"> tag specified for this action is correct, not excluded and accepted.

相关文章:

  • CRTP在项目优化中的使用
  • Compose常用UI组件
  • WIN系统服务器如何修改远程端口?
  • Spring Bean 生命周期
  • 14 命令(Command)模式
  • 【STM32H743IIT6】正点原子阿波罗TFTLCD移植
  • C# ConcurrentQueue 使用详解
  • 14-二叉树最小深度-广度优先(BFS)
  • 帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]
  • Coze插件之基于IDE创建插件
  • 八股文-C++语言部分
  • 意图识别概述
  • 剑指 Offer II 024. 反转链表
  • 【Day44 LeetCode】图论问题 Ⅱ
  • javaSE学习笔记23-线程(thread)-总结
  • 伪类选择器
  • 修改项目的一些前端记录(自用)
  • JavaScript中判断元素是否在可视区域内
  • linux有名管道的文件描述符3和4
  • 个人简历html网页模板,科技感炫酷html简历模板
  • 联合国秘书长欢迎中美经贸高层会谈成果
  • 缺字危机:一本书背后有多少“不存在”的汉字?
  • 沈阳一超市疑借领养名义烹食流浪狗,当地市监局:已收到多起投诉
  • 中国潜水救捞行业协会发布《呵护潜水员职业健康安全宣言》
  • 美元指数上涨超1%重返101上方,创1个月新高
  • 教育部基础教育教指委:小学阶段禁止学生独自使用开放式内容生成功能