Skip to content

Commit c8390b1

Browse files
Addressed comments
1 parent 07e5569 commit c8390b1

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/Value.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.time.LocalDate;
5151
import java.time.LocalDateTime;
5252
import java.time.OffsetDateTime;
53+
import java.time.ZoneId;
5354
import java.time.ZonedDateTime;
5455
import java.util.ArrayList;
5556
import java.util.Arrays;
@@ -871,7 +872,8 @@ static Value toValue(Object value) {
871872
}
872873
if (value instanceof LocalDateTime) {
873874
return createUntypedStringValue(
874-
convertToISO8601(SpannerTypeConverter.atUTC((LocalDateTime) value)));
875+
convertToISO8601(
876+
SpannerTypeConverter.atUTC(((LocalDateTime) value).atZone(ZoneId.systemDefault()))));
875877
}
876878
if (value instanceof OffsetDateTime) {
877879
return createUntypedStringValue(
@@ -945,7 +947,8 @@ static Value toValue(Object value) {
945947
return createUntypedIterableValue(
946948
(LocalDateTime) object,
947949
iterator,
948-
val -> convertToISO8601(SpannerTypeConverter.atUTC(val)));
950+
val ->
951+
convertToISO8601(SpannerTypeConverter.atUTC(val.atZone(ZoneId.systemDefault()))));
949952
}
950953
if (object instanceof OffsetDateTime) {
951954
return createUntypedIterableValue(

google-cloud-spanner/src/test/java/com/google/cloud/spanner/ValueTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import java.util.List;
6464
import java.util.Random;
6565
import java.util.Set;
66+
import java.util.TimeZone;
6667
import java.util.function.Supplier;
6768
import java.util.stream.Collectors;
6869
import org.junit.Test;
@@ -2584,10 +2585,13 @@ public void testToValue() {
25842585
assertEquals(Type.date(), value.getType());
25852586
assertEquals(date, value.getDate());
25862587

2588+
TimeZone defaultTimezone = TimeZone.getDefault();
2589+
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"));
25872590
LocalDateTime localDateTime = LocalDateTime.of(2018, 2, 26, 11, 30, 10);
25882591
value = Value.toValue(localDateTime);
25892592
assertNull(value.getType());
2590-
assertEquals("2018-02-26T11:30:10.000Z", value.getAsString());
2593+
assertEquals("2018-02-26T10:30:10.000Z", value.getAsString());
2594+
TimeZone.setDefault(defaultTimezone);
25912595

25922596
OffsetDateTime offsetDateTime = OffsetDateTime.of(localDateTime, ZoneOffset.ofHours(10));
25932597
value = Value.toValue(offsetDateTime);
@@ -2766,15 +2770,18 @@ public void testToValueIterable() {
27662770
assertEquals(Type.array(Type.date()), value.getType());
27672771
assertEquals(dates, value.getDateArray());
27682772

2773+
TimeZone defaultTimezone = TimeZone.getDefault();
2774+
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
27692775
List<LocalDateTime> localDateTimes =
27702776
Arrays.asList(
27712777
LocalDateTime.of(2024, 8, 23, 1, 49, 52, 10),
27722778
LocalDateTime.of(2024, 12, 27, 1, 49, 52, 10));
27732779
value = Value.toValue(localDateTimes);
27742780
assertNull(value.getType());
27752781
assertEquals(
2776-
Arrays.asList("2024-08-23T01:49:52.000Z", "2024-12-27T01:49:52.000Z"),
2782+
Arrays.asList("2024-08-22T20:19:52.000Z", "2024-12-26T20:19:52.000Z"),
27772783
value.getAsStringList());
2784+
TimeZone.setDefault(defaultTimezone);
27782785

27792786
List<OffsetDateTime> offsetDateTimes =
27802787
Arrays.asList(

0 commit comments

Comments
 (0)