目录
1. 把时间戳格式的Date转换为"yyyy-MM-dd HH:mm:ss.SSS"格式的String
4.1 String转Date,格式"yyyyMMddHHmmss"或"yyyyMMdd"
4.2 String转Date,格式"yyyy-MM-dd HH:mm:ss"或"yyyy-MM-dd "
5. 批注:Dete.isbefore(Date date)方法,对Date的格式要求没有那么严格。
1. 把时间戳格式的Date转换为"yyyy-MM-dd HH:mm:ss.SSS"格式的String
private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String create_time = format.format(c.getCreate_time());//把时间戳格式的Date转换为"yyyy-MM-dd HH:mm:ss.SSS"格式的String
2. 判断date是周几
public static String dateToWeekDay(Date date) {
//SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmss");
String[] weekDays = {"0", "1", "2", "3", "4", "5", "6"};//[12345代表工作日]
Calendar cal = Calendar.getInstance();
// Date date;
try {
//date = f.parse(datetime);
cal.setTime(date);
} catch (Exception e) {
e.printStackTrace();
}
//一周的第几天
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
3.1 获取UTC/GMT时间
String timestamp = getUTCTimeStr() + "";//[世界统一时间、世界标准时间、国际协调时间、UTC或GMT
public static long getUTCTimeStr() throws ParseException {
StringBuffer UTCTimeBuffer = new StringBuffer();
// 1、取得本地时间:
Calendar cal = Calendar.getInstance();
// 2、取得时间偏移量://[取得与GMT之间的时间偏移量,例如北京属于东8区,则时间偏移量为28800000毫秒
int zoneOffset = cal.get(Calendar.ZONE_OFFSET);
// 3、取得夏令时差://[根据系统时间计算,如果不在夏令时生效范围内,则为0毫秒,反之为28800000毫秒
int dstOffset = cal.get(Calendar.DST_OFFSET);
// 4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(Calendar.MILLISECOND, -(zoneOffset + dstOffset));
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day);
UTCTimeBuffer.append(" ").append(hour).append(":").append(minute);
// format.parse(UTCTimeBuffer.toString()) ;
return cal.getTimeInMillis();
}
3.2UTC时间转北京时间
public static void main(String[] args) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date d = null;
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX").parse("2021-09-01T16:19:10Z");
System.out.println(df.format(d));
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX").parse("2021-09-01T16:19:10Z");
System.out.println(df.format(d));
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").parse("2021-09-01T16:19:10Z");
System.out.println(df.format(d));
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX").parse("2021-09-01T16:19:10-00");
System.out.println(df.format(d));
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX").parse("2021-09-01T16:19:10+0800");
System.out.println(df.format(d));
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").parse("2021-09-01T16:19:10+08:00");
System.out.println(df.format(d));
// 把UTC时间转为北京时间
// 2023-04-17T06:40:29.183Z是Chrome浏览器复制的cookie到期时间,是UTC时间/伦敦时间
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").parse("2023-04-17T06:40:29.183Z");
System.out.println(df.format(d));
}
3.3 获取当前 / 指定时区时间
4.1 String转Date,格式"yyyyMMddHHmmss"或"yyyyMMdd"
public static Date StrToDateNoLine(String str) {
SimpleDateFormat format_Short = new SimpleDateFormat("yyyyMMdd");
try {
SimpleDateFormat format_R = new SimpleDateFormat("yyyyMMddHHmmss");
return format_R.parse(str);
} catch (Exception e) {
try {
return format_Short.parse(str);
} catch (ParseException e1) {
e1.printStackTrace();
return null;
}
}
}
4.2 String转Date,格式"yyyy-MM-dd HH:mm:ss"或"yyyy-MM-dd "
public static Date StrToDate(String str) throws ParseException {
SimpleDateFormat format_R = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dates = null;
try {
dates = format_R.parse(str);
}catch (Exception ex){
SimpleDateFormat format_D = new SimpleDateFormat("yyyy-MM-dd");
dates = format_D.parse(str);
}
return dates;
}
5. 批注:Dete.isbefore(Date date)方法,对Date的格式要求没有那么严格。
Date sourceDate = DateUtil.StrToDateNoLine(sourceVal);
Date conditionDate = DateUtil.StrToDate(compareVal);
if (conditionDate.before(sourceDate)) {
conditionMatcher = true;
}
6.LocalDateTime.now().
public static void main(String[] args) { DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"); System.out.println(LocalDateTime.now().format(dateTimeFormat));//2021-09-28 10:22:47.58 System.out.println(LocalDateTime.now());//2021-09-28T10:23:55.037 System.out.println(LocalDateTime.now().toLocalTime());//10:23:55.037 System.out.println(LocalDateTime.now().getDayOfWeek());//TUESDAY }