Java时间日期处理方法大全

目录

1. 把时间戳格式的Date转换为"yyyy-MM-dd HH:mm:ss.SSS"格式的String

2. 判断date是周几

3.1 获取UTC/GMT时间

3.2UTC时间转北京时间

3.3 获取当前 / 指定时区时间 

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的格式要求没有那么严格。

6.LocalDateTime.now().

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
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java提供了许多用于处理日期时间的类和方法。其中最常用的是: 1. Date类:表示日期时间的类。现在已经被废弃,不建议使用。 2. Calendar类:是一个抽象类,提供了处理日期时间方法。 3. SimpleDateFormat类:可以将日期时间格式化成指定的字符串。 4. LocalDateTime类:Java 8引入的新类,用于表示日期时间,提供了许多方便的方法。 5. Duration类和Period类:用于表示时间间隔。 下面是一些示例代码: 1. 获取当前日期时间 ```java Date date = new Date(); System.out.println(date); LocalDateTime now = LocalDateTime.now(); System.out.println(now); ``` 2. 格式化日期时间 ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(date); System.out.println(formattedDate); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedNow = now.format(formatter); System.out.println(formattedNow); ``` 3. 计算时间间隔 ```java LocalDateTime start = LocalDateTime.of(2021, 1, 1, 0, 0, 0); LocalDateTime end = LocalDateTime.now(); Duration duration = Duration.between(start, end); System.out.println(duration.toDays()); LocalDate startDate = LocalDate.of(2021, 1, 1); LocalDate endDate = LocalDate.now(); Period period = Period.between(startDate, endDate); System.out.println(period.getYears()); ``` 这里只是简单介绍了一些Java处理日期时间的基础知识,具体的使用方法还需要根据实际需求进行学习和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值