java时间运算
程序员文章站
2024-03-24 11:55:16
...
1.获取某一年中某一周的周几的时间
//计算某一年中的第多少周的周一和周日的日期时间
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2019); // 2019年
cal.set(Calendar.WEEK_OF_YEAR, 53); // 设置为2019年的第33周
cal.set(Calendar.DAY_OF_WEEK, 2); // 1表示周日,2表示周一,7表示周六
Date date = cal.getTime();
cal.set(Calendar.YEAR, 2019); // 2019年
cal.set(Calendar.WEEK_OF_YEAR, 54); // 设置为2019年的第34周
cal.set(Calendar.DAY_OF_WEEK, 1); // 1表示周日,2表示周一,7表示周六
Date date01 = cal.getTime();
System.out.println("周一:===:"+df.format(date));
System.out.println("周日:===:"+df.format(date01));
2. 比较量两个时间的大小
//两个日期比较
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date dt1 =df.parse("2019-02-03");
//获取当前时间
Date dt2 =new Date();
if (dt1.getTime() > dt2.getTime()) {
System.out.println(df.format(dt1.getTime())+"比较大");
} else if(dt1.getTime() < dt2.getTime()) {
System.out.println(df.format(dt2.getTime())+"是当前时间,当前时间比较大");
}
3. 获取两个日期之间的相差的天数
//查询两个之前之间的天数。
//设置转换的日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//开始时间
Date startDate = sdf.parse("2019-08-05");
//结束时间
Date endDate = sdf.parse("2019-08-10");
//得到相差的天数 betweenDate
long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
//打印控制台相差的天数
System.out.println(sdf.format(startDate)+"与 "+sdf.format(endDate)+"相差"+betweenDate+"天");
4. 在某个时间的基础上获取其前后一个固定天数的日期。
//某个日期之前7天
int past = -7;
//某个日期之后7天
//int past = 7;
//创建SimpleDateFormat并设置时间格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dateTime = null;
try {
//将以上格式的的字符串endTime转换成时间
dateTime = simpleDateFormat.parse("2019-03-05");
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateTime);
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String result = format.format(today);
System.out.println("result==="+result);
5. 查询某特定时间之前或之后的特定几个月的时间日期
//查询当前时间之后6个月时间
int renewalsdata = 6;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
System.out.println(sdf.format(calendar.getTime()));
calendar.add(Calendar.MONTH, renewalsdata);
System.out.println(sdf.format(calendar.getTime()));
6. 日期与周的转换
//星期转换
Date time = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(time);
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
int dow = cal.get(Calendar.DAY_OF_WEEK);
int dom = cal.get(Calendar.DAY_OF_MONTH);
int doy = cal.get(Calendar.DAY_OF_YEAR);
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
cal.setTime(time);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0) {
w = 0;
}
System.out.println("weekDays[w]===="+weekDays[w]);
System.out.println("当期时间: " + cal.getTime());
System.out.println("日期: " + day);
System.out.println("月份: " + month);
System.out.println("年份: " + year);
System.out.println("一周的第几天: " + dow); // 星期日为一周的第一天输出为 1,星期一输出为 2,以此类推
System.out.println("一月中的第几天: " + dom);
System.out.println("一年的第几天: " + doy)
7. 获取当前时间到当天凌晨12点毫秒数
//获取当前时间到今天晚上12点的毫秒数
long current = System.currentTimeMillis();// 当前时间毫秒数
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long tomorrowzero = calendar.getTimeInMillis();
long tomorrowzeroSeconds = (tomorrowzero - current);
System.out.println("当前时间毫秒数:"+current);
System.out.println("不知道是啥"+tomorrowzero);
System.out.println("现在到今晚12点的毫秒数:"+tomorrowzeroSeconds);