Java常用类:时间日期

1|0Java常用类:时间日期



1|1Date

  • Date表示特定的瞬间,精确到毫秒

  • Date 类中的大部分方法都已经被 Calendar 类中的方法所取代

  • 示例:

    import java.util.Date; public class Demo01 { public static void main(String[] args) { //1.创建Date对象 //今天 Date date1 = new Date(); System.out.println(date1.toString()); //使用toString();显示日期时间 System.out.println(date1.toLocaleString());//toLocaleString();已过时 //昨天 Date date2 = new Date(date1.getTime() - (60*60*24*1000)); System.out.println(date2.toLocaleString());//toLocaleString();已过时 //2.方法 // after(); 判断Date对象是否在指定日期之后 // before(); 判断Date对象是否在指定日期之前 boolean after = date1.after(date2); boolean before = date2.before(date1); System.out.println(after); System.out.println(before); //compareTo();比较日期 int i = date1.compareTo(date2); System.out.println(i); //equals();比较是否相等 boolean equals = date1.equals(date2); System.out.println(equals); } }

    输出

    Fri Apr 16 21:24:01 CST 2021 2021416日 下午9:24:01 2021415日 下午9:24:01 true true 1 false

1|2Calendar

  • Calendar 提供了获取或设置各种日历字段的方法

  • 构造方法:

    • protected Calendar();修饰符是 protected ,所以无法直接创建该对象
    • 需要通过Calendar.getInstance();来创建对象
  • Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用 getInstance() 方法创建即可

  • Calendar类对象字段类型

常量 描述
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 或 Calendar.DAY_OF_MONTH 日期
Calendar.HOUR 12小时制的小时
Calendar.HOUR_OF_DAY 24小时制的小时
Calendar.MINUTE 分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期
  • 示例:

    import java.util.Calendar; public class Demo01 { public static void main(String[] args) { //创建Calender对象 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime().toLocaleString()); System.out.println(calendar.getTimeInMillis());//1970年到现在的毫秒值 //获取时间信息 //获取年 int year = calendar.get(Calendar.YEAR); //获取月 0-11 int month = calendar.get(Calendar.MONTH)+1; //获取日 int day = calendar.get(Calendar.DAY_OF_MONTH);//DAY_OF_MONTH 或 DATE 都可以 //获取小时 int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR 是12小时样式的,HOUR_OF_DAY 是24小时样式 //获取分钟 int minute = calendar.get(Calendar.MINUTE); //获取秒 int second = calendar.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second); //修改时间 Calendar calendar1 = Calendar.getInstance(); calendar1.set(Calendar.DAY_OF_MONTH,15); System.out.println(calendar1.getTime().toLocaleString()); //add();方法修改时间 calendar1.add(Calendar.HOUR,1); System.out.println(calendar1.getTime().toLocaleString()); //getActualMaximum();获取当月日期最大天数 //getActualMinimum();获取当月日期最小天数 int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH); int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH); System.out.println(max); System.out.println(min); } }
输出 ```java 2021年4月16日 下午11:38:43 1618587523635 2021年4月16日23:38:43 2021年4月15日 下午11:38:43 2021年4月16日 上午12:38:43 30 1

1|3SimpleDateFormat

  • SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类

  • 进行格式化(日期->文本),解析(文本->日期)

  • 常用的时间模式字母

    字母 日期或时间 示例
    y 2021
    M 年中的月份 04
    d 月中的天数 17
    H 1天中小时数(0-23) 22
    m 分钟 34
    s 57
    S 毫秒 233
  • 示例:

    import java.text.SimpleDateFormat; import java.util.Date; public class Demo01 { public static void main(String[] args) throws Exception { //1.创建SimpleDateFormat对象 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //2.创建Date对象 Date date = new Date(); //格式化Date对象(时间->字符串) String format = simpleDateFormat.format(date); System.out.println(format); //解析(字符串->时间) Date parse = simpleDateFormat.parse("2020年02月20日 20:02:20"); System.out.println(parse); } }

    输出

    2021041710:23:23 Thu Feb 20 20:02:20 CST 2020

1|4*拓展:输入日期查看日历

  • 需求:输入日期返回日历

  • 示例:

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class Assignment { public static void main(String[] args) throws Exception { //读入字符串 Scanner scanner = new Scanner(System.in); System.out.print("请输入你想要查看的日期(例如:2021-04-17 或 2021-4-17):"); String strDate = scanner.next(); //String --> Calendar: //String --> Date //"yyyy-MM-dd"为设置时间格式 Date date = new SimpleDateFormat("yyyy-MM-dd").parse(strDate); //Date --> Calendar Calendar cal = Calendar.getInstance(); cal.setTime(date); //打印表头(星期) System.out.println("日\t一\t二\t三\t四\t五\t六"); //获取半月的最大天数 int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //获取当前日期的日 int nowDay = cal.get(Calendar.DAY_OF_MONTH); //将日期调为本月的1号 cal.set(Calendar.DAY_OF_MONTH,1); //获取本月的一号是星期几 int currentWeek = cal.get(Calendar.DAY_OF_WEEK); //设置前面空出来的天数 int day = currentWeek - 1; //引入计数器 int count = 0; //在日期前打印空格 for (int i = 0; i < day; i++) { System.out.print("\t"); } //空出来的也要计入计数器 count += day; //遍历天数(从1号到 maxDay) for (int i = 1; i <= maxDay; i++) { if (i == nowDay) { System.out.print(i+"*\t");//在日历中标记当前日期 }else { System.out.print(i+"\t"); } count++;//每在控制台输出一个数字,计数器+1 if (count%7 == 0) { System.out.println(); } } } }

    控制台

    请输入你想要查看的日期(例如:2021-04-172021-4-17):2021-4-17 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17* 18 19 20 21 22 23 24 25 26 27 28 29 30

__EOF__

本文作者userName
本文链接https://www.cnblogs.com/dt746294093/p/14669661.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   D..T  阅读(148)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示