Java 中的时间类简单理解

Data类

java.util.Date类:表示特定的瞬间,精确到毫秒。1000毫秒等于1秒。

Date类构造方法:

  • public Date():从运行程序的此时此刻到时间原点经历的毫秒值,转换成Date对象,分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):将指定参数的毫秒值date,转换成Date对象,分配Date对象并初始化此对象,以表示自从标准基准时间(称为历元(epoch,即19701100:00:00 GMT)以来的指定毫秒数。
public static void main(String[] args){
    //创建日期对象,把当前的时间
    System.out.println(newDate());
    //Tue Jan 16 14:37:35 CST 2020
    //创建日期对象,把当前的毫秒值转成日期对象
    System.out.println(newDate(0));
    //Thu Jan 01 08:00:00 CST 1970 
}

Date类的常用方法

  • public long getTime():把日期对象转换成对应的时间毫秒值。
  • public void setTime(long time):把方法参数给定的毫秒值设置给日期对象。
public static void main(String[] args){
    //创建日期对象
    Date date=new Date();
    //public long getTime()获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值    
    System.out.println(date.getTime());
    //public void setTime(long time):设置时间,给的是毫秒值
    date.setTime(0);
    System.out.println(date);
}

 日期对象和毫秒值的相互转换

日期是不能进行数学计算的,但是毫秒值可以,在需要对日期进行计算时,可以现将日期转成毫秒值后在进行计算。
  • 日期对象转成毫秒值:
    • Date date=new Date()date.getTime()
    • System.currentTimeMillis()
  • 毫秒值转成日期对象:
    • Date date=new Date(long  毫秒值 )
    • date.setTime(long  毫秒值 )
 

DateFormat

java.text.DateFormat是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,把Date对象转换为String对象。
  • 解析:按照指定的格式,把String对象转换为Date对象。

构造方法

由于 DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:
public SimpleDateFormat(String pattern) :用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数Pattern是一个字符串,代表日期时间的自定义格式。常用的格式有:
标识字母(区分大小写))含义
y
M
d
H
m
s
备注:更详细的格式规则,可以参考 SimpleDateFormat 类的 API 文档。

转换方法

  • String format(Date date)传递日期对象,返回格式化后的字符串。
  • Date parse(String str)传递字符串,返回日期对象。
public static void main(String[] args) throws ParseException{
    //格式化:从Date到String
    Date d=new Date();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
    String s=sdf.format(d);
    System.out.println(s);
    System.out.println("--------");
    //从String到Date
    String ss="2048-08-0911:11:11";
    //ParseException
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
    Date dd=sdf2.parse(ss);
    System.out.println(dd);
}

Calendar日历类

java.util.Calender是日历类,在Date后出现,替换掉了许多Date的方。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

 日历对象获取方式:
Calendar 是抽象类,不能创建对象,需要使用子类对象。 java.util.GregorianCalendar 类是 Calendar的子类,但是创建日历对象需要根据本地的时区,语言环境来创建,比较困难, Calendar 类提供了静态方法 getInstance()直接获取子类的对象。
public static Calendar getInstance():使用默认时区和语言环境获得一个日历。
Calendar cal = Calendar.getInstance();

常用方法:

  • public intget(intfield):返回给定日历字段的值。
  • public void set(intfield,intvalue):将给定的日历字段设置为给定值。
  • public abstract void add(intfield,intamount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
 

日历字段

Calendar类中提供很多静态成员,直接类名调用,代表给定的日历字段:

字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR时(12小时制)
HOUR_OF_DAY时(24小时制)
MINUTE

SECOND
DAY_OF_WEEK周中的天(周日为1,可以-1使用)

 

public static void main(String[] args){
    //创建Calendar对象
    Calendar cal=Calendar.getInstance();
    //获取年
    int year=cal.get(Calendar.YEAR);
    //设置年份为2020年
    cal.set(Calendar.YEAR,2020);
    //将年份修改为2000年
    cal.add(Calendar.YEAR,-20)
    //将日历对象转换为日期对象
    Date d=cal.getTime();
    System.out.println(d);
}

案例需求:获取任意一年中的二月有几天

案例分析:

  • 可以将日历设置到任意一年的三月一日
  • 向前偏移一天
  • 获取偏移后的日历即可

代码实现:

public static void main(String[] args){
    //键盘录入任意的年份
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入年:");
    int year=sc.nextInt();
    //设置日历对象的年、月、日
    Calendar c=Calendar.getInstance();
    c.set(year,3,1);
    //3月1日往前推一天,就是2月的最后一天
    c.add(Calendar.DATE,-1);
    //获取这一天输出即可
    int date=c.get(Calendar.DATE);
    System.out.println(year+"年的2月份有"+date+"天");
}
  •  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值