1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.http;
21
22 import java.text.DateFormat;
23 import java.text.ParseException;
24 import java.text.SimpleDateFormat;
25 import java.util.Calendar;
26 import java.util.Date;
27 import java.util.Locale;
28 import java.util.TimeZone;
29 import java.util.regex.Pattern;
30
31 public class DateUtil {
32
33 private final static Locale LOCALE = Locale.US;
34 private final static TimeZone GMT_ZONE;
35 private final static String RFC_1123_PATTERN = "EEE, dd MMM yyyy HH:mm:ss zzz";
36 private final static DateFormat RFC_1123_FORMAT;
37
38
39 private final static Pattern DIGIT_PATTERN = Pattern.compile("^\\d+$");
40
41 static {
42 RFC_1123_FORMAT = new SimpleDateFormat(DateUtil.RFC_1123_PATTERN, DateUtil.LOCALE);
43 GMT_ZONE = TimeZone.getTimeZone("GMT");
44 DateUtil.RFC_1123_FORMAT.setTimeZone(DateUtil.GMT_ZONE);
45 }
46
47 public static String getCurrentAsString() {
48 synchronized(DateUtil.RFC_1123_FORMAT) {
49 return DateUtil.RFC_1123_FORMAT.format(new Date());
50 }
51 }
52
53
54
55
56
57
58
59
60
61
62 private static long parseDateStringToMilliseconds(final String dateString) {
63
64 try {
65 synchronized (DateUtil.RFC_1123_FORMAT) {
66 return DateUtil.RFC_1123_FORMAT.parse(dateString).getTime();
67 }
68 } catch (final ParseException e) {
69 return 0;
70 }
71 }
72
73
74
75
76
77
78
79
80
81
82
83 public static long parseToMilliseconds(final String dateValue) {
84
85 long ms = 0;
86
87 if (DateUtil.DIGIT_PATTERN.matcher(dateValue).matches()) {
88 ms = Long.parseLong(dateValue);
89 } else {
90 ms = parseDateStringToMilliseconds(dateValue);
91 }
92
93 return ms;
94 }
95
96
97
98
99
100
101
102
103 public static String parseToRFC1123(final long dateValue) {
104
105 final Calendar calendar = Calendar.getInstance();
106 calendar.setTimeInMillis(dateValue);
107
108 synchronized (DateUtil.RFC_1123_FORMAT) {
109 return DateUtil.RFC_1123_FORMAT.format(calendar.getTime());
110 }
111 }
112
113
114
115
116
117
118
119
120 public static String getDateAsString(Date date) {
121 synchronized (DateUtil.RFC_1123_FORMAT) {
122 return RFC_1123_FORMAT.format(date);
123 }
124 }
125
126 }