java格式日期计算_java日期时间--时间的获取、格式的转换与时间的计算

一、当前时间的获取与格式的转换

Date类

Calendar类

其他

简介

Date类中使用最多的是获取系统当前的日期和时间。

可看作是Date类的一个增强版,Calendar类允许以毫秒为单位的时间转换成年、月、日、时、分、秒。可以把Calendar类当作是万年历,默认显示的是当前时间,当然也可以查看其他时间

代码

Date date = new Date();
System.out.println(date);

Calendar cal=Calendar.getInstance();
System.out.println(cal);

long date=System.currentTimeMillis();
System.out.println(date);

输出

Mon Jul 01 11:33:23 CST 2019
(格林威治时间格式)

java.util.GregorianCalendar[time=1561953350254,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6……

1561952378083
(表示当前时间的毫秒值)

格式转换

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDate = sdf.format(date);


int year=cal.get(Calendar.YEAR);//年
int month=cal.get(Calendar.MONTH)+1;//月 默认是从0开始 即1月获取到的是0
int day=cal.get(Calendar.DAY_OF_MONTH);//日,即一个月中的第几天
int hour=cal.get(Calendar.HOUR_OF_DAY);//小时
int minute=cal.get(Calendar.MINUTE);//分
int second=cal.get(Calendar.SECOND);//秒
String dateStr =year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;

Date dateStr = new Date(date);

格式转化后输出

2019-07-01 11:53:17

2019-7-1 11:56:19

Mon Jul 01 11:45:35 CST 2019

二、获取特定时间

1. 获取指定时间

方法一:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = null ;

try {

date = sdf.parse("2019-7-1 14:47:25");

} catch (ParseException e) {

e.printStackTrace();

}

System.out.println(dateStr);

输出:  Mon Jul 01 14:47:25 CST 2019 方法二:

Date date = new Date(119,6,1);// 表示2019年7月1日,不是很常用

System.out.println(date);

输出:  Mon Jul 01 00:00:00 CST 2019

方法三:

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY, 14);//控制时

cal.set(Calendar.MINUTE, 12);//控制分

cal.set(Calendar.SECOND, 13);//控制秒

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateStr = sdf.format(cal.getTime());

System.out.println(dateStr);

输出:  2019-07-01 14:12:13

2.时间变化

(1)获取前一天时间

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, -1);

Date d = cal.getTime();

SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");

String yesterday = sp.format(d);// 获取昨天日期

System.out.println(yesterday);

或者

Date d = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);

SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");

String yesterday = sp.format(d);// 获取昨天日期

System.out.println(yesterday);

两个输出都是:  2019-06-30 (2)获取前一个星期的时间

Calendar cal = Calendar.getInstance();

cal.add(Calendar.WEEK_OF_MONTH, -1);

Date d = cal.getTime();

SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");

String date = sp.format(d);// 获取昨天日期

System.out.println(date);

输出:  2019-06-24 (3)获取下一个月的时间

Calendar cal = Calendar.getInstance();

cal.add(Calendar.MONTH, 1);

Date d = cal.getTime();

SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");

String date = sp.format(d);// 获取昨天日期

System.out.println(date);

输出:  2019-08-01

三、时间的计算

1.计算执行代码的时间差

long startTime = System.currentTimeMillis();

doSomething();

long endTime=System.currentTimeMillis();

long time= endTime-startTime;

System.out.println("程序运行时间:"+time+"ms");

输出:  程序运行时间:817ms

2.计算两个时间的天数

Date startDate=new Date(119,5,20);

Date endDate=new Date(119,6,1);

long nd=1000*24*60*60;

long diff=endDate.getTime()-startDate.getTime();

long countDays=diff/nd;

System.out.println("两个时间相差:"+countDays+"天");

输出:  两个时间相差:11天

3.时间的遍历

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

Date d1 = sdf.parse("2019-5-07");//起始日期

Date d2 = sdf.parse("2019-07-1");//结束日期

Calendar cal =Calendar.getInstance();

cal.setTime(d1);

Date tmp=d1;

//打印2019年5月7日到2019年7月1日的日期

while(tmp.getTime()<=d2.getTime()) {

System.out.println(sdf.format(tmp));

//天数加上1

cal.add(Calendar.DAY_OF_MONTH, 1);

tmp=cal.getTime();

}

} catch (ParseException e) {

e.printStackTrace();

}

java时间格式大全(算法源码) java,date,时间,时间格式,算法源码 * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } /** * 将长时间格式字符串转换时间 yyyy-MM-dd HH:mm:ss * * @param strDate * @return */ public static Date strToDateLong(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ParsePosition pos = new ParsePosition(0); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss * * @param dateDate * @return */ public static String dateToStrLong(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(dateDate); return dateString; } /** * 将短时间格式时间转换为字符串 yyyy-MM-dd * * @param dateDate * @param k * @return */ public static String dateToStr(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String dateString = formatter.format(dateDate); return dateString; } /** * 将短时间格式字符串转换时间 yyyy-MM-dd * * @param strDate * @return */ public static Date strToDate(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition pos = new ParsePosition(0); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 得到现在时间 * * @return */ public static Date getNow() { Date currentTime = new Date(); return currentTime; } /** * 提取一个月中的最后一天 * * @param day * @return */ public static Date getLastDate(long day) { Date date = new Date(); long date_3_hm = date.getTime() - 3600000 * 34 * day; Date date_3_hm_date = new Date(date_3_hm); return date_3_hm_date; } /** *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值