Skip to content

Commit 0041e3d

Browse files
author
Kristinn Sigurðsson
committed
Merge pull request #149 from nlnwa/DateLocaleIssue148
Fix for Issue #148: All dates should be independent of locale settings
2 parents 0517a78 + 5e11fd1 commit 0041e3d

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

wayback-cdx-server/src/main/java/org/archive/cdxserver/writer/MementoLinkWriter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.IOException;
44
import java.text.SimpleDateFormat;
55
import java.util.Date;
6+
import java.util.Locale;
67
import java.util.TimeZone;
78

89
import javax.servlet.http.HttpServletRequest;
@@ -103,7 +104,7 @@ private static String makeLink(String prefix, String url, String rel, String tim
103104
public final static TimeZone GMT_TZ = TimeZone.getTimeZone("GMT");
104105

105106
static {
106-
HTTP_LINK_DATE_FORMATTER = new SimpleDateFormat(HTTP_LINK_DATE_FORMAT);
107+
HTTP_LINK_DATE_FORMATTER = new SimpleDateFormat(HTTP_LINK_DATE_FORMAT, Locale.ENGLISH);
107108
HTTP_LINK_DATE_FORMATTER.setTimeZone(GMT_TZ);
108109
}
109110

wayback-core/src/main/java/org/archive/wayback/memento/MementoUtils.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ public class MementoUtils implements MementoConstants {
2727
public final static SimpleDateFormat DATE_FORMAT_14_FORMATTER;
2828

2929
static {
30-
HTTP_LINK_DATE_FORMATTER = new SimpleDateFormat(HTTP_LINK_DATE_FORMAT, Locale.US);
30+
HTTP_LINK_DATE_FORMATTER = new SimpleDateFormat(HTTP_LINK_DATE_FORMAT, Locale.ENGLISH);
3131
HTTP_LINK_DATE_FORMATTER.setTimeZone(GMT_TZ);
32-
DATE_FORMAT_14_FORMATTER = new SimpleDateFormat(DATE_FORMAT_14, Locale.US);
32+
DATE_FORMAT_14_FORMATTER = new SimpleDateFormat(DATE_FORMAT_14, Locale.ENGLISH);
3333
DATE_FORMAT_14_FORMATTER.setTimeZone(GMT_TZ);
3434
}
3535

@@ -271,9 +271,9 @@ public static void addTimegateHeaders(HttpServletResponse response,
271271
// }
272272

273273
public static final SimpleDateFormat ACCEPT_DATE_FORMATS[] = {
274-
new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.US),
275-
new SimpleDateFormat("E, dd MMM yyyy Z", Locale.US),
276-
new SimpleDateFormat("E, dd MMM yyyy", Locale.US) };
274+
new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH),
275+
new SimpleDateFormat("E, dd MMM yyyy Z", Locale.ENGLISH),
276+
new SimpleDateFormat("E, dd MMM yyyy", Locale.ENGLISH) };
277277

278278
public static Date parseAcceptDateTimeHeader(String datespec) {
279279
for (SimpleDateFormat format : ACCEPT_DATE_FORMATS) {

wayback-core/src/main/java/org/archive/wayback/util/partition/Partitioner.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Date;
2626
import java.util.Iterator;
2727
import java.util.List;
28+
import java.util.Locale;
2829
import java.util.TimeZone;
2930
import java.util.logging.Logger;
3031

@@ -143,7 +144,7 @@ public PartitionSize getSize(Date first, Date last, int maxP) {
143144
}
144145

145146
private void logDates(String message, Date date1, Date date2) {
146-
SimpleDateFormat f = new SimpleDateFormat("H:mm:ss:SSS MMM d, yyyy");
147+
SimpleDateFormat f = new SimpleDateFormat("H:mm:ss:SSS MMM d, yyyy", Locale.ENGLISH);
147148
f.setTimeZone(TZ_UTC);
148149
String pd1 = f.format(date1);
149150
String pd2 = f.format(date2);

wayback-core/src/test/java/org/archive/io/arc/TestARCReader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.archive.util.DateUtils;
1919

2020
import com.google.common.io.CountingInputStream;
21+
import java.util.Locale;
2122

2223
/**
2324
* Fixture ARCReader.
@@ -55,7 +56,7 @@ public ARCRecord get(long offset) throws IOException {
5556

5657
private String isozToDateTime14(String isoz) {
5758
try {
58-
Date d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(isoz);
59+
Date d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH).parse(isoz);
5960
return DateUtils.get14DigitDate(d);
6061
} catch (ParseException ex) {
6162
throw new RuntimeException("bad ISOZ: " + isoz, ex);

wayback-core/src/test/java/org/archive/wayback/resourcestore/resourcefile/WarcResourceTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package org.archive.wayback.resourcestore.resourcefile;
55

66
import java.text.SimpleDateFormat;
7+
import java.util.Locale;
78
import java.util.Map;
89

910
import junit.framework.TestCase;
@@ -170,7 +171,7 @@ public void testMetadataRecord() throws Exception {
170171
// must have Date header, in HTTP Date format.
171172
String date = res.getHeader("Date");
172173
assertNotNull("has date header", date);
173-
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(date);
174+
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH).parse(date);
174175

175176
// block as content
176177
byte[] buf = new byte[block.length + 1];
@@ -281,7 +282,7 @@ public void testResourceRecord() throws Exception {
281282
// must have Date header, in HTTP Date format.
282283
String date = res.getHeader("Date");
283284
assertNotNull("has date header", date);
284-
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(date);
285+
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH).parse(date);
285286

286287
res.close();
287288
}

0 commit comments

Comments
 (0)