Skip to content

Commit 89a539d

Browse files
committed
简单修改时间类
1 parent 4693cc1 commit 89a539d

File tree

4 files changed

+200
-156
lines changed

4 files changed

+200
-156
lines changed

.editorconfig

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# EditorConfig helps developers define and maintain consistent
2+
# coding styles between different editors and IDEs
3+
# editorconfig.org
4+
5+
root = true
6+
7+
[*]
8+
9+
# Change these settings to your own preference
10+
indent_style = space
11+
indent_size = 4
12+
13+
# We recommend you to keep these unchanged
14+
end_of_line = lf
15+
charset = utf-8
16+
trim_trailing_whitespace = true
17+
insert_final_newline = true
18+
19+
[*.md]
20+
trim_trailing_whitespace = false
21+
22+
[{package,bower}.json]
23+
indent_style = space
24+
indent_size = 2
25+
26+
[pom.xml]
27+
indent_style = tab

pom.xml

+27-17
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,52 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55

66
<groupId>org.javacore</groupId>
77
<artifactId>java-core-learning-example</artifactId>
88
<version>0.0.1-SNAPSHOT</version>
9-
<build>
10-
<plugins>
11-
<plugin>
12-
<groupId>org.apache.maven.plugins</groupId>
13-
<artifactId>maven-compiler-plugin</artifactId>
14-
<configuration>
15-
<source>1.8</source>
16-
<target>1.8</target>
17-
</configuration>
18-
</plugin>
19-
</plugins>
20-
</build>
219

2210
<name>java core learning example</name>
2311
<description>java core learning example</description>
12+
<packaging>war</packaging>
2413

2514
<properties>
2615
<google-collections.version>1.0</google-collections.version>
2716
</properties>
2817

2918
<dependencies>
30-
3119
<dependency>
3220
<groupId>com.google.collections</groupId>
3321
<artifactId>google-collections</artifactId>
3422
<version>${google-collections.version}</version>
3523
</dependency>
3624

37-
</dependencies>
38-
39-
<packaging>war</packaging>
25+
<dependency>
26+
<groupId>org.projectlombok</groupId>
27+
<artifactId>lombok</artifactId>
28+
<version>1.16.8</version>
29+
<scope>provided</scope>
30+
</dependency>
4031

32+
<dependency>
33+
<groupId>junit</groupId>
34+
<artifactId>junit</artifactId>
35+
<version>4.12</version>
36+
<scope>test</scope>
37+
</dependency>
38+
</dependencies>
4139

40+
<build>
41+
<plugins>
42+
<plugin>
43+
<groupId>org.apache.maven.plugins</groupId>
44+
<artifactId>maven-compiler-plugin</artifactId>
45+
<configuration>
46+
<source>1.8</source>
47+
<target>1.8</target>
48+
</configuration>
49+
</plugin>
50+
</plugins>
51+
</build>
4252
</project>

src/main/java/org/javacore/time/TimeUtil.java

+105-139
Original file line numberDiff line numberDiff line change
@@ -10,143 +10,109 @@
1010
*/
1111
public final class TimeUtil {
1212

13-
private TimeUtil() {
14-
}
15-
16-
/**
17-
* 时间间隔之间的空格
18-
*/
19-
private static final String SPACE_OF_TIME = " ";
20-
21-
/**
22-
* 获取默认时间格式: yyyy-MM-dd HH:mm:ss
23-
*/
24-
private static final DateTimeFormatter defaultDateTimeFormatter = DateTimeFormatter.ofPattern(TimeFormat.LONG_DATE_PATTERN_LINE);
25-
26-
/**
27-
* String 转时间
28-
*
29-
* @param timeStr
30-
* @return
31-
*/
32-
public final static LocalDateTime parseTime(String timeStr) {
33-
LocalDateTime dateTime = LocalDateTime.parse(timeStr, defaultDateTimeFormatter);
34-
return dateTime;
35-
}
36-
37-
/**
38-
* String 转时间
39-
*
40-
* @param timeStr
41-
* @param format 时间格式
42-
* @return
43-
*/
44-
public final static LocalDateTime parseTime(String timeStr, String format) {
45-
LocalDateTime dateTime = LocalDateTime.parse(timeStr, getDateTimeFormatter(format));
46-
return dateTime;
47-
}
48-
49-
/**
50-
* 时间转 String
51-
*
52-
* @param time
53-
* @return
54-
*/
55-
public final static String parseTime(LocalDateTime time) {
56-
return defaultDateTimeFormatter.format(time);
57-
}
58-
59-
/**
60-
* 时间转 String
61-
*
62-
* @param time
63-
* @param format 时间格式
64-
* @return
65-
*/
66-
public final static String parseTime(LocalDateTime time, String format) {
67-
return getDateTimeFormatter(format).format(time);
68-
}
69-
70-
/**
71-
* 获取当前时间
72-
*
73-
* @return
74-
*/
75-
public final static String getCurrentDatetime() {
76-
LocalDateTime now = LocalDateTime.now().withNano(0);
77-
return now.toLocalDate() + SPACE_OF_TIME + now.toLocalTime();
78-
}
79-
80-
/**
81-
* 获取当前时间
82-
*
83-
* @param format 时间格式
84-
* @return
85-
*/
86-
public final static String getCurrentDatetime(String format) {
87-
LocalDateTime now = LocalDateTime.now();
88-
return getDateTimeFormatter(format).format(now);
89-
}
90-
91-
/**
92-
* 获取时间格式
93-
*
94-
* @param format 时间格式
95-
* @return
96-
*/
97-
private final static DateTimeFormatter getDateTimeFormatter(String format) {
98-
return DateTimeFormatter.ofPattern(format);
99-
}
100-
101-
public static void main(String[] args) {
102-
// 当前时间
103-
System.out.println(getCurrentDatetime(TimeFormat.SHORT_DATE_PATTERN_LINE));
104-
System.out.println(getCurrentDatetime());
105-
System.out.println(getCurrentDatetime(TimeFormat.LONG_DATE_PATTERN_WITH_MILSEC_LINE));
106-
107-
// 时间转 String
108-
LocalDateTime dateTime = LocalDateTime.now();
109-
System.out.println(parseTime(dateTime));
110-
111-
LocalDateTime dateTime1 = LocalDateTime.of(2016, 8, 25, 23, 10, 10);
112-
System.out.println(parseTime(dateTime1, TimeFormat.LONG_DATE_PATTERN_LINE));
113-
114-
// String 转时间
115-
String dateTimeStr = "2016-08-25 23:10:10";
116-
System.out.println(parseTime(dateTimeStr));
117-
118-
String dateTimeStr1 = "2016-08-25 23:10:10";
119-
System.out.println(parseTime(dateTimeStr1, TimeFormat.LONG_DATE_PATTERN_LINE));
120-
}
13+
/**
14+
* 获取默认时间格式: yyyy-MM-dd HH:mm:ss
15+
*/
16+
private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = TimeFormat.LONG_DATE_PATTERN_LINE.formatter;
17+
18+
private TimeUtil() {
19+
// no construct function
20+
}
21+
22+
/**
23+
* String 转时间
24+
*
25+
* @param timeStr
26+
* @return
27+
*/
28+
public static LocalDateTime parseTime(String timeStr) {
29+
return LocalDateTime.parse(timeStr, DEFAULT_DATETIME_FORMATTER);
30+
}
31+
32+
/**
33+
* String 转时间
34+
*
35+
* @param timeStr
36+
* @param format 时间格式
37+
* @return
38+
*/
39+
public static LocalDateTime parseTime(String timeStr, TimeFormat format) {
40+
return LocalDateTime.parse(timeStr, format.formatter);
41+
}
42+
43+
/**
44+
* 时间转 String
45+
*
46+
* @param time
47+
* @return
48+
*/
49+
public static String parseTime(LocalDateTime time) {
50+
return DEFAULT_DATETIME_FORMATTER.format(time);
51+
}
52+
53+
/**
54+
* 时间转 String
55+
*
56+
* @param time
57+
* @param format 时间格式
58+
* @return
59+
*/
60+
public static String parseTime(LocalDateTime time, TimeFormat format) {
61+
return format.formatter.format(time);
62+
}
63+
64+
/**
65+
* 获取当前时间
66+
*
67+
* @return
68+
*/
69+
public static String getCurrentDatetime() {
70+
return DEFAULT_DATETIME_FORMATTER.format(LocalDateTime.now());
71+
}
72+
73+
/**
74+
* 获取当前时间
75+
*
76+
* @param format 时间格式
77+
* @return
78+
*/
79+
public static String getCurrentDatetime(TimeFormat format) {
80+
return format.formatter.format(LocalDateTime.now());
81+
}
82+
83+
/**
84+
* 时间格式
85+
*/
86+
public enum TimeFormat {
87+
88+
/**
89+
* 短时间格式
90+
*/
91+
SHORT_DATE_PATTERN_LINE("yyyy-MM-dd"),
92+
SHORT_DATE_PATTERN_SLASH("yyyy/MM/dd"),
93+
SHORT_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd"),
94+
SHORT_DATE_PATTERN_NONE("yyyyMMdd"),
95+
96+
/**
97+
* 长时间格式
98+
*/
99+
LONG_DATE_PATTERN_LINE("yyyy-MM-dd HH:mm:ss"),
100+
LONG_DATE_PATTERN_SLASH("yyyy/MM/dd HH:mm:ss"),
101+
LONG_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss"),
102+
LONG_DATE_PATTERN_NONE("yyyyMMdd HH:mm:ss"),
103+
104+
/**
105+
* 长时间格式 带毫秒
106+
*/
107+
LONG_DATE_PATTERN_WITH_MILSEC_LINE("yyyy-MM-dd HH:mm:ss.SSS"),
108+
LONG_DATE_PATTERN_WITH_MILSEC_SLASH("yyyy/MM/dd HH:mm:ss.SSS"),
109+
LONG_DATE_PATTERN_WITH_MILSEC_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss.SSS"),
110+
LONG_DATE_PATTERN_WITH_MILSEC_NONE("yyyyMMdd HH:mm:ss.SSS");
111+
112+
private transient DateTimeFormatter formatter;
113+
114+
TimeFormat(String pattern) {
115+
formatter = DateTimeFormatter.ofPattern(pattern);
116+
}
117+
}
121118
}
122-
123-
/**
124-
* 时间格式
125-
*
126-
*/
127-
class TimeFormat {
128-
129-
/**
130-
* 短时间格式
131-
*/
132-
public static final String SHORT_DATE_PATTERN_LINE = "yyyy-MM-dd";
133-
public static final String SHORT_DATE_PATTERN_SLASH = "yyyy/MM/dd";
134-
public static final String SHORT_DATE_PATTERN_DOUBLE_SLASH = "yyyy\\MM\\dd";
135-
public static final String SHORT_DATE_PATTERN_NONE = "yyyyMMdd";
136-
137-
/**
138-
* 长时间格式
139-
*/
140-
public static final String LONG_DATE_PATTERN_LINE = "yyyy-MM-dd HH:mm:ss";
141-
public static final String LONG_DATE_PATTERN_SLASH = "yyyy/MM/dd HH:mm:ss";
142-
public static final String LONG_DATE_PATTERN_DOUBLE_SLASH = "yyyy\\MM\\dd HH:mm:ss";
143-
public static final String LONG_DATE_PATTERN_NONE = "yyyyMMdd HH:mm:ss";
144-
145-
/**
146-
* 长时间格式 带毫秒
147-
*/
148-
public static final String LONG_DATE_PATTERN_WITH_MILSEC_LINE = "yyyy-MM-dd HH:mm:ss.SSS";
149-
public static final String LONG_DATE_PATTERN_WITH_MILSEC_SLASH = "yyyy/MM/dd HH:mm:ss.SSS";
150-
public static final String LONG_DATE_PATTERN_WITH_MILSEC_DOUBLE_SLASH = "yyyy\\MM\\dd HH:mm:ss.SSS";
151-
public static final String LONG_DATE_PATTERN_WITH_MILSEC_NONE = "yyyyMMdd HH:mm:ss.SSS";
152-
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.javacore.time;
2+
3+
import org.junit.FixMethodOrder;
4+
import org.junit.Test;
5+
import org.junit.runners.MethodSorters;
6+
7+
import java.time.LocalDateTime;
8+
9+
import static org.javacore.time.TimeUtil.TimeFormat.LONG_DATE_PATTERN_DOUBLE_SLASH;
10+
import static org.javacore.time.TimeUtil.TimeFormat.LONG_DATE_PATTERN_SLASH;
11+
import static org.junit.Assert.assertEquals;
12+
13+
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
14+
public class TimeUtilTest {
15+
16+
@Test
17+
public void testParseSpecificTimeStringByUsingDefaultPattern() throws Exception {
18+
LocalDateTime expectedDateTime = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
19+
LocalDateTime parsedTime = TimeUtil.parseTime("2014-11-11 10:11:11");
20+
assertEquals(expectedDateTime, parsedTime);
21+
}
22+
23+
@Test
24+
public void testParseSpecificTimeStringUsingTimeFormat() throws Exception {
25+
LocalDateTime expectedDateTime = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
26+
LocalDateTime parsedTime = TimeUtil.parseTime("2014/11/11 10:11:11", LONG_DATE_PATTERN_SLASH);
27+
assertEquals(expectedDateTime, parsedTime);
28+
}
29+
30+
@Test
31+
public void testParseLocalDateTimeByUsingDefaultFormatter() throws Exception {
32+
LocalDateTime time = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
33+
assertEquals(TimeUtil.parseTime(time), "2014-11-11 10:11:11");
34+
}
35+
36+
@Test
37+
public void testParseLocalDateTimeByUsingTimeFormat() throws Exception {
38+
LocalDateTime time = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
39+
assertEquals(TimeUtil.parseTime(time, LONG_DATE_PATTERN_DOUBLE_SLASH), "2014\\11\\11 10:11:11");
40+
}
41+
}

0 commit comments

Comments
 (0)