summaryrefslogtreecommitdiff
path: root/src/main/java/com/nis/util/DateUtil.java
blob: f616139f7e5c7440ac17b2ad11d62e10472c6b43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.nis.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;
import java.util.TimeZone;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.log.Log;

public class DateUtil {
	private static Log logger = Log.get();
	
	public static Date getUTCTimeByConfigTimeZone() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		sdf.setTimeZone(DateUtil.getConfigTimeZone(0));
		String format = sdf.format(new Date());
		Date parse = null;
		try {
			sdf.setTimeZone(TimeZone.getDefault());
			parse = sdf.parse(format);
		} catch (Exception e) {
			logger.error(e);
		}
		return parse;
	}
	
	public static TimeZone getConfigTimeZone(int configTimeZone) {
		int newTime = configTimeZone * 60 * 60 * 1000;
		TimeZone timeZone;
		String[] ids = TimeZone.getAvailableIDs(newTime);
		if (ids.length == 0) {
			timeZone = TimeZone.getDefault();
		} else {
			timeZone = new SimpleTimeZone(newTime, ids[0]);
		}
		return timeZone;
	}
	
	/**
	 * 偏移秒数
	 *
	 * @param date   日期
	 * @param offset 偏移秒数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetSecond(Date date, int offset) {
		return offset(date, DateField.SECOND, offset);
	}
	
	/**
	 * 获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
	 *
	 * @param date      基准日期
	 * @param dateField 偏移的粒度大小(小时、天、月等){@link DateField}
	 * @param offset    偏移量,正数为向后偏移,负数为向前偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offset(Date date, DateField dateField, int offset) {
		return dateNew(date).offset(dateField, offset);
	}
	
	/**
	 * 根据已有{@link Date} 产生新的{@link DateTime}对象
	 *
	 * @param date Date对象
	 * @return {@link DateTime}对象
	 * @since 4.3.1
	 */
	public static DateTime dateNew(Date date) {
		return new DateTime(date);
	}
}