Java中有关时间和日期的处理

Java中跟时间相关的常用类有System、Date、SimpleDateFormat以及Calendar。下面详解介绍一下这些类的用法

System类

System表示系统类,提供了一些标准输入、输出的方法。以及获取系统相关属性的方法,复制数组等操作。

常用方法

public static long currentTimeMillis()
    获取当前的系统时间毫秒值
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
	复制源数组中指定的元素到目标数组中
	src: 源数组
	srcPos: 源数组起始位置
	dest: 目标数组
	destPos: 目标数组起始位置
	length: 复制元素的个数

下面是arraycopy方法的图解
在这里插入图片描述

代码演示

public class Demo1{
  public static void main(String[] args){
  	//获取当前时间的毫秒值
    long time1=System.currentTimeMillis();
    
    int[] src={10,20,30,40,50,60,70};
    int[] dest=new int[7];
    //从src数组中的0索引开始,复制4个元素到dest数组中,dest数组总3索引开始接收
    System.arraycopy(src,0,dest,3,4);
	
	//再次获取当前时间的毫秒值
    long time2=System.currentTimeMillis();
    System.out.println(time2-time1); //
  }
}

Date类

Date表示日期类,表示一个特定的时间。

构造方法

创建Date对象的时候需要指定一个时间的毫秒值,如果不指定就是

//创建一个Date对象,表示当前系统时间
Date date1=new Date();
//创建一个Date对象,参数表示指定的时间距离1970年的毫秒值。
Date date2=new Date(1000*60); //1000*60表示1分钟

在这里插入图片描述

常用方法

public void setTime(long time)
  设置Date表示的时间毫秒值
public long getTime()
  获取Date对象表示的时间毫秒值

代码演示

public class Demo1{
  public static void main(String[] args){
    //创建当前时间的对象
    Date date1=new Date();
    //获取当前时间的毫秒值
    System.out.println(date1.getTime());

    //创建距离1970年1月1日时间之后1小时的Date对象
    Date date2=new Date(1000*60*60);
    //获取date1对象时间的毫秒值
    System.out.println(date2.getTime());
  }
}

SimpleDateFormat类

Date类的日期时间格式太丑了,可以使用SimpleDateFormat对象Date对象进行格式化和解析的操作。

它可以对Date对象进行格式化解析的操作(ps: 耐心往下看有具体解释).

常用日期格式

yyyy 	年
MM		月
dd		日
HH		时(24小时)
mm		分
ss		秒
SS		毫秒

日期格式化

所谓格式化就是把Date对象转换为想要的字符串格式(如:2018年6月19日)

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date=new Date();//当前时间对象
String str=sdf.format(date);//把当前时间的Date对象转换为字符串
System.out.println(str);//2018-6-19 18:34

日期解析

所谓解析就是把具有日期格式的字符串转换为Date对象

String str="1991年8月20日";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd");
//把上面的字符串转换为Date对象
Date date=sdf.parse(str);

//计算1991年8月20日距今有多少天
long between=new Date().getTime()-date.getTime(); //现在的毫秒值-1991年8月20日的毫秒值
//把时间间隔转换为天,并输出
System.out.println((between/1000/60/60/24)+"天");

Calendar类

Calendar表示日历类,可以很方便的对日历字段(年、月、日、时、分、秒等)可进行获取、修改,计算等操作。

Calendar是一个抽象类,不能直接创建对象,但是有一个方法可以获取对象

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();

在操作年,月,日等字段的时候要用一个特定的常量进行区分

Calendar常用日历字段

Calendar.YEAR	年
Calendar.MONTH	月
Calendar.DAY_OF_MONTH 月中的天(ps:0表示1)
Calendar.DAY_OF_YEAR  年中的天
Calendar.DAY_OF_WEEK  星期中某一天(ps:1代表星期日)

Calendar的修改时间

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置 年,2020年
c.set(Calendar.YEAR,2020);
//设置 月,3月(ps:0表示1月,1表示2月,2表示3月...这是规定别多想)
c.set(Calendar.MONTH,2);
//设置月中的天,18日
c.set(Calendar.DAY_OF_MONTH,18);

//还可以年,月,日一起设置
c.set(2020,2,18);//设置日历时间为 2020年3月18日

Calendar计算时间方法

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置时间2018年6月19日
c.set(2018,5,19);
c.add(Calendar.YEAR,1);//把年字段往后+1,变为2019年
c.add(Calendar.DAY_OF_MONTH,-2);//把月中的日往前-2,变为17日

Calendar的获取时间方法

//获取Calendar对象,表示当前日历的时间
Calendar c=Calendar.getInstance();
//设置时间2018年6月19日
c.set(2018,5,19);
c.add(Calendar.YEAR,1);//把年字段往后+1,变为2019年
c.add(Calendar.DAY_OF_MONTH,-2);//把月中的日往前-2,变为17日

//获取日历中“年”的字段值
int year=c.get(Calendar.YEAR);
//获取日历中“月”的字段值
int month=c.get(Calendar.MONTH)+1;
//获取日历中“月中的天”字段值
int dayOfMonth=c.get(Calendar.DAY_OF_MONTH);
//获取日历中“年中的天”字段值
int dayOfYear=c.get(Calendar.DAY_OF_YEAR);
//获取日历中“星期中的天”字段值
int index=c.get(Calendar.DAY_OF_WEEK);
//第一个元素"",是为了把"星期日"顶到后面去,让他对应1索引...
String[]  weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"}
//打印输出来看一下
System.out.println(year+"年"+month+"月"+dayOfMonth+"日 是一年中的"+dayOfYear+"天");
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值