Make JsonFormat locale independent.
This commit is contained in:
parent
fa1788026c
commit
4ae8656b6d
@ -44,6 +44,7 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
@ -83,7 +84,7 @@ public final class Timestamps {
|
||||
};
|
||||
|
||||
private static SimpleDateFormat createTimestampFormat() {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
|
||||
GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
|
||||
// We use Proleptic Gregorian Calendar (i.e., Gregorian calendar extends
|
||||
// backwards to year one) for timestamp formating.
|
||||
@ -386,11 +387,11 @@ public final class Timestamps {
|
||||
static String formatNanos(int nanos) {
|
||||
// Determine whether to use 3, 6, or 9 digits for the nano part.
|
||||
if (nanos % NANOS_PER_MILLISECOND == 0) {
|
||||
return String.format("%1$03d", nanos / NANOS_PER_MILLISECOND);
|
||||
return String.format(Locale.ENGLISH, "%1$03d", nanos / NANOS_PER_MILLISECOND);
|
||||
} else if (nanos % NANOS_PER_MICROSECOND == 0) {
|
||||
return String.format("%1$06d", nanos / NANOS_PER_MICROSECOND);
|
||||
return String.format(Locale.ENGLISH, "%1$06d", nanos / NANOS_PER_MICROSECOND);
|
||||
} else {
|
||||
return String.format("%1$09d", nanos);
|
||||
return String.format(Locale.ENGLISH, "%1$09d", nanos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,10 +65,16 @@ import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class JsonFormatTest extends TestCase {
|
||||
public JsonFormatTest() {
|
||||
// Test that locale does not affect JsonFormat.
|
||||
Locale.setDefault(Locale.forLanguageTag("hi-IN"));
|
||||
}
|
||||
|
||||
private void setAllFields(TestAllTypes.Builder builder) {
|
||||
builder.setOptionalInt32(1234);
|
||||
builder.setOptionalInt64(1234567890123456789L);
|
||||
|
Loading…
Reference in New Issue
Block a user