java中Date类,SimpleDateFormat类和Calendar类

Date类

public Date()

创建一个Date对象,代表的是系统当前此刻的日期时间

public Date(long date)

Constructs a Date object using the given milliseconds time value.

把时间毫秒值转变成Date日期对象

public void setTime(long date)

Sets an existing Date object using the given milliseconds time value.

设置日期对象的时间为当前时间毫秒值(data)对应的时间

public long getTime()

Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.

获取总的毫秒值

java 复制代码
import java.util.Date;

public class test {
    public static void main(String[] args) {
        //创建一个Date对象,代表系统当前时间信息
        Date d=new Date();
        System.out.println(d);//Tue Apr 02 17:41:17 CST 2024

        //拿到时间毫秒值
        long time=d.getTime();
        System.out.println(time);

        //把时间毫秒值变成时间对象
        time+=2*1000;
        Date d2=new Date(time);
        System.out.println(d2);//Tue Apr 02 17:43:17 CST 2024

        //直接把日期对象的时间通过setTime方法修改
        Date d3=new Date();
        System.out.println(d3);//Tue Apr 02 17:41:17 CST 2024
        d3.setTime(time);//把日期对象的时间改成此time毫秒的时间
        System.out.println(d3);//Tue Apr 02 17:43:17 CST 2024
    }
}

SimpleDateFormat类

可以把简单日期格式化,可以用来把日期对象,时间毫秒值格式化我们想要的形式

public SimpleDateFormat(String pattern)

创建一个简单日期格式化对象,并封装时间的格式

The following pattern letters are defined (all other characters from 'A' to 'Z' and from 'a' to 'z' are reserved):

例子:

public final String format(Date date)

将日期格式成日期/时间字符串

Public final String format(Object time)

将时间毫秒值格式成日期/时间字符串

java 复制代码
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {
    public static void main(String[] args) {
        Date d=new Date();
        System.out.println(d);
        long time= d.getTime();
        System.out.println(time);

        SimpleDateFormat s1=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss  EEE  a");
        String ss=s1.format(d);
        String ss2=s1.format(time);
        System.out.println(ss);
        System.out.println(ss2);
       /* Wed Apr 03 18:49:12 CST 2024
        1712141352357
        2024年04月03日 18:49:12  周三  下午
        2024年04月03日 18:49:12  周三  下午*/
    }
}

public Date parse(String source)

把字符串时间解析成日期对象

java 复制代码
import java.text.ParseException;
        import java.text.SimpleDateFormat;
        import java.util.Date;

public class test2 {
    public static void main(String[] args) throws ParseException {
        String dateStr="2024-01-01 12:00:00";
        //1:创建一个简单格式化对象,指定的时间格式必须与被解析的时间格式一模一样,否则程序出bug;
        SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sim.parse(dateStr);
        System.out.println(d);//Mon Jan 01 12:00:00 CST 2024
    

一个简单的案例

java 复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test3 {
    public static void main(String[] args) throws ParseException {
        String start ="2024-11-11 0:0:0";
        String end="2024-11-11 0:10:0";
        String x="2024-11-11 0:01:18";
        String j="2024-11-11 0:10:18";

        SimpleDateFormat s=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
        Date starDt=s.parse(start);
        Date endDt=s.parse(end);
        Date xDt=s.parse(x);
        Date jDt=s.parse(j);

        //把日期对象变成时间毫秒值来比较
        long startTime=starDt.getTime();
        long endTime=endDt.getTime();
        long xTime=xDt.getTime();
        long jTime=jDt.getTime();

        if(xTime>=startTime&&xTime<=endTime)
        {
            System.out.println("x在时间范围内");
        }
        else System.out.println("x不在时间范围内");
        if(jTime>=startTime&&jTime<=endTime)
        {
            System.out.println("j在时间范围内");
        }
        else System.out.println("j不在时间范围内");
    }
}

Calendar类:抽象类

public static Canledar getInstance()

获取当前日历对象

public int get(int field)

获取日历中的某个信息

public final Date getTime()

获取日期对象

public long getTimeInMills()

获取时间毫秒值

public void set(int field,int value)

修改日历的某个信息

public void add(int field,int amount)

为某个信息增加/减少指定的值

java 复制代码
import java.util.Calendar;
import java.util.Date;

public class test {
    public static void main(String[] args) {
        //1:得到系统此刻时间对应的日历对象
        Calendar now =Calendar.getInstance();
        System.out.println(now);

        //2:获取日历的某个信息
        int year=now.get(Calendar.YEAR);
        System.out.println(year);//2024
        int month=now.get(Calendar.MONTH);
        System.out.println(month);//3(月份是从0开始计算的。所以当前是4月份)

        //3:拿到日历记录的时间对象
        Date d=now.getTime();
        System.out.println(d);//Wed Apr 03 19:42:30 CST 2024
        //4:拿到日历记录的时间毫秒值
        long time =now.getTimeInMillis();
        System.out.println(time);//1712144598810

        //5:修改日历中的某个信息
        now.set(Calendar.MONTH, 6);//将月份改成7月份
        System.out.println(now);
        now.set(Calendar.DATE, 125);//改成一年中的第125天
        
        //6:为某个信息增加减少
        now.add(Calendar.MONTH, 2);//月份加2
        now.add(Calendar.MONTH, -1);//月份减一
    }
}
相关推荐
熊猫钓鱼>_>2 分钟前
大学图论第 6 讲:网络流与二分图匹配——对偶性让瓶颈自己现形
开发语言·算法·面试·职场和发展·图论·校招·面经
方便面不加香菜2 分钟前
C++ 关于多态的知识点讲解
开发语言·c++
Wang's Blog8 分钟前
Java 项目部署之 Docker工具快速入门: 使用 Docker 镜像命令练习
java·docker
企业数字化笔记17 分钟前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit
jimy123 分钟前
C++ 类成员函数的内联定义(inline)详解
开发语言·c++
tiger从容淡定是人生24 分钟前
从 Gemini 的任务示例出发:AI 能否从知识中推导工作流?
java·人工智能·aigc·知识图谱·创业创新·零知识证明
Nebula_g28 分钟前
JavaSE高级:动态代理
java·开发语言·算法·javase
高级程序源35 分钟前
springboot校园外卖平台13676-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·tomcat·maven·课程设计
怦然丶心动43 分钟前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
青春逝如流水1 小时前
Java 线程与操作系统、硬件的关系:状态、映射与差异
java·开发语言·多线程·ai文章