Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions javakdb/src/main/java/com/kx/c.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@
import java.time.Instant;
import java.time.ZoneOffset;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import java.util.UUID;
import javax.net.ssl.SSLSocket;
Expand Down Expand Up @@ -2033,14 +2035,14 @@ public static Flip td(Object tbl) throws UnsupportedEncodingException{
* @return String representation of int with zero padding
*/
static String i2(int i){
return new DecimalFormat("00").format(i);
return new DecimalFormat("00",DecimalFormatSymbols.getInstance(Locale.ROOT)).format(i);
}
/**
* Creates a string from int with left padding of 0s, if less than 9 digits
* @param i Integer to convert to string
* @return String representation of int with zero padding
*/
static String i9(int i){
return new DecimalFormat("000000000").format(i);
return new DecimalFormat("000000000",DecimalFormatSymbols.getInstance(Locale.ROOT)).format(i);
}
}
17 changes: 17 additions & 0 deletions javakdb/src/test/java/com/kx/CTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1105,6 +1105,23 @@ public void testTimespanToString()
Assert.assertEquals("", mon.toString());
}

@Test
public void testTemporalToStringLocaleIndependent()
{
// The canonical kdb+ textual form of temporal types must always use ASCII digits,
// independent of the JVM default locale (e.g. Arabic-Indic digit locales).
java.util.Locale previous = java.util.Locale.getDefault();
try {
java.util.Locale.setDefault(java.util.Locale.forLanguageTag("ar-EG"));
Assert.assertEquals("2001-11", new c.Month(22).toString());
Assert.assertEquals("00:22", new c.Minute(22).toString());
Assert.assertEquals("00:00:22", new c.Second(22).toString());
Assert.assertEquals("00:00:00.000000022", new c.Timespan(22).toString());
} finally {
java.util.Locale.setDefault(previous);
}
}

@Test
public void testTimespanEquals()
{
Expand Down