先看工具类定义,后面有调用使用方式
package tool;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* 沈杰
* 2020-09-07 09:36:21
* 工具类:日期时间相关
*/
public class ToolForDateTime {
private static final TimeZone timeZone = TimeZone.getTimeZone("GMT");
/**
* 获取当前指定时区的Calendar对象
*
* @param hour 相当于格林威治时间的小时数(用以表示时区)
* @return 指定时区的Calendar对象
*/
public static Calendar getNowCalendar(Integer hour) {
Calendar calendar = Calendar.getInstance(timeZone);
calendar.add(Calendar.HOUR, hour);
return calendar;
}
/**
* 根据时间格式、时间字符串来解析时间,得到对应的Calendar
*
* @param format 时间字符串的解析格式
* @param dateString 时间字符串
* @return 指定时间字符串在指定格式下对应的Calender对象
* @throws ParseException 当dateString的格式与指定的format格式不一致时,抛出此异常
*/
public static Calendar getCalendarByDateString(String format, String dateString, Integer timeZoneHour) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Date date = simpleDateFormat.parse(dateString);
Calendar calendar = Calendar.getInstance(timeZone);
calendar.setTime(date);
calendar.add(Calendar.HOUR, timeZoneHour);
return calendar;
}
/**
* 根据Date获取一个Calendar对象(根据timeZoneHour获取对应的Calendar对象)
*/
public static Calendar getCalendarByConvertTimeZone(Calendar originalCalendar, Integer originalTimeZoneHour, Integer objectiveTimeZoneHour) {
Calendar calendar = Calendar.getInstance(timeZone);
calendar.setTime(originalCalendar.getTime());
calendar.add(Calendar.HOUR, objectiveTimeZoneHour - originalTimeZoneHour);
return calendar;
}
/**
* 获取指定Calendar的年份
*
* @param calendar 已指定了时区的Calendar对象
* @return 如:2020等
*/
public static Integer getYearByCalendar(Calendar calendar) {
return calendar.get(Calendar.YEAR