@@ -19,6 +19,7 @@ package org.apache.spark.sql.catalyst.util
19
19
20
20
import java .sql .{Date , Timestamp }
21
21
import java .text .SimpleDateFormat
22
+ import java .time .ZoneId
22
23
import java .util .{Locale , TimeZone }
23
24
import java .util .concurrent .TimeUnit
24
25
@@ -31,12 +32,13 @@ class DateTimeUtilsSuite extends SparkFunSuite {
31
32
32
33
val TimeZonePST = TimeZone .getTimeZone(" PST" )
33
34
private def defaultTz = DateTimeUtils .defaultTimeZone()
35
+ private def defaultZoneId = ZoneId .systemDefault()
34
36
35
37
test(" nanoseconds truncation" ) {
36
38
val tf = TimestampFormatter .getFractionFormatter(DateTimeUtils .defaultTimeZone.toZoneId)
37
39
def checkStringToTimestamp (originalTime : String , expectedParsedTime : String ) {
38
40
val parsedTimestampOp = DateTimeUtils .stringToTimestamp(
39
- UTF8String .fromString(originalTime), defaultTz )
41
+ UTF8String .fromString(originalTime), defaultZoneId )
40
42
assert(parsedTimestampOp.isDefined, " timestamp with nanoseconds was not parsed correctly" )
41
43
assert(DateTimeUtils .timestampToString(tf, parsedTimestampOp.get) === expectedParsedTime)
42
44
}
@@ -141,7 +143,7 @@ class DateTimeUtilsSuite extends SparkFunSuite {
141
143
test(" string to timestamp" ) {
142
144
for (tz <- ALL_TIMEZONES ) {
143
145
def checkStringToTimestamp (str : String , expected : Option [Long ]): Unit = {
144
- assert(stringToTimestamp(UTF8String .fromString(str), tz) === expected)
146
+ assert(stringToTimestamp(UTF8String .fromString(str), tz.toZoneId ) === expected)
145
147
}
146
148
147
149
checkStringToTimestamp(" 1969-12-31 16:00:00" , Option (date(1969 , 12 , 31 , 16 , tz = tz)))
@@ -261,11 +263,11 @@ class DateTimeUtilsSuite extends SparkFunSuite {
261
263
262
264
// Test stringToTimestamp
263
265
assert(stringToTimestamp(
264
- UTF8String .fromString(" 2015-02-29 00:00:00" ), defaultTz ).isEmpty)
266
+ UTF8String .fromString(" 2015-02-29 00:00:00" ), defaultZoneId ).isEmpty)
265
267
assert(stringToTimestamp(
266
- UTF8String .fromString(" 2015-04-31 00:00:00" ), defaultTz ).isEmpty)
267
- assert(stringToTimestamp(UTF8String .fromString(" 2015-02-29" ), defaultTz ).isEmpty)
268
- assert(stringToTimestamp(UTF8String .fromString(" 2015-04-31" ), defaultTz ).isEmpty)
268
+ UTF8String .fromString(" 2015-04-31 00:00:00" ), defaultZoneId ).isEmpty)
269
+ assert(stringToTimestamp(UTF8String .fromString(" 2015-02-29" ), defaultZoneId ).isEmpty)
270
+ assert(stringToTimestamp(UTF8String .fromString(" 2015-04-31" ), defaultZoneId ).isEmpty)
269
271
}
270
272
271
273
test(" hours" ) {
@@ -450,20 +452,20 @@ class DateTimeUtilsSuite extends SparkFunSuite {
450
452
val truncated =
451
453
DateTimeUtils .truncTimestamp(inputTS, level, timezone)
452
454
val expectedTS =
453
- DateTimeUtils .stringToTimestamp(UTF8String .fromString(expected), defaultTz )
455
+ DateTimeUtils .stringToTimestamp(UTF8String .fromString(expected), defaultZoneId )
454
456
assert(truncated === expectedTS.get)
455
457
}
456
458
457
- val defaultInputTS =
458
- DateTimeUtils .stringToTimestamp( UTF8String .fromString(" 2015-03-05T09:32:05.359" ), defaultTz )
459
- val defaultInputTS1 =
460
- DateTimeUtils .stringToTimestamp( UTF8String .fromString(" 2015-03-31T20:32:05.359" ), defaultTz )
461
- val defaultInputTS2 =
462
- DateTimeUtils .stringToTimestamp( UTF8String .fromString(" 2015-04-01T02:32:05.359" ), defaultTz )
463
- val defaultInputTS3 =
464
- DateTimeUtils .stringToTimestamp( UTF8String .fromString(" 2015-03-30T02:32:05.359" ), defaultTz )
465
- val defaultInputTS4 =
466
- DateTimeUtils .stringToTimestamp( UTF8String .fromString(" 2015-03-29T02:32:05.359" ), defaultTz )
459
+ val defaultInputTS = DateTimeUtils .stringToTimestamp(
460
+ UTF8String .fromString(" 2015-03-05T09:32:05.359" ), defaultZoneId )
461
+ val defaultInputTS1 = DateTimeUtils .stringToTimestamp(
462
+ UTF8String .fromString(" 2015-03-31T20:32:05.359" ), defaultZoneId )
463
+ val defaultInputTS2 = DateTimeUtils .stringToTimestamp(
464
+ UTF8String .fromString(" 2015-04-01T02:32:05.359" ), defaultZoneId )
465
+ val defaultInputTS3 = DateTimeUtils .stringToTimestamp(
466
+ UTF8String .fromString(" 2015-03-30T02:32:05.359" ), defaultZoneId )
467
+ val defaultInputTS4 = DateTimeUtils .stringToTimestamp(
468
+ UTF8String .fromString(" 2015-03-29T02:32:05.359" ), defaultZoneId )
467
469
468
470
testTrunc(DateTimeUtils .TRUNC_TO_YEAR , " 2015-01-01T00:00:00" , defaultInputTS.get)
469
471
testTrunc(DateTimeUtils .TRUNC_TO_MONTH , " 2015-03-01T00:00:00" , defaultInputTS.get)
@@ -483,15 +485,15 @@ class DateTimeUtilsSuite extends SparkFunSuite {
483
485
for (tz <- ALL_TIMEZONES ) {
484
486
withDefaultTimeZone(tz) {
485
487
val inputTS = DateTimeUtils .stringToTimestamp(
486
- UTF8String .fromString(" 2015-03-05T09:32:05.359" ), defaultTz )
488
+ UTF8String .fromString(" 2015-03-05T09:32:05.359" ), defaultZoneId )
487
489
val inputTS1 = DateTimeUtils .stringToTimestamp(
488
- UTF8String .fromString(" 2015-03-31T20:32:05.359" ), defaultTz )
490
+ UTF8String .fromString(" 2015-03-31T20:32:05.359" ), defaultZoneId )
489
491
val inputTS2 = DateTimeUtils .stringToTimestamp(
490
- UTF8String .fromString(" 2015-04-01T02:32:05.359" ), defaultTz )
492
+ UTF8String .fromString(" 2015-04-01T02:32:05.359" ), defaultZoneId )
491
493
val inputTS3 = DateTimeUtils .stringToTimestamp(
492
- UTF8String .fromString(" 2015-03-30T02:32:05.359" ), defaultTz )
494
+ UTF8String .fromString(" 2015-03-30T02:32:05.359" ), defaultZoneId )
493
495
val inputTS4 = DateTimeUtils .stringToTimestamp(
494
- UTF8String .fromString(" 2015-03-29T02:32:05.359" ), defaultTz )
496
+ UTF8String .fromString(" 2015-03-29T02:32:05.359" ), defaultZoneId )
495
497
496
498
testTrunc(DateTimeUtils .TRUNC_TO_YEAR , " 2015-01-01T00:00:00" , inputTS.get, tz)
497
499
testTrunc(DateTimeUtils .TRUNC_TO_MONTH , " 2015-03-01T00:00:00" , inputTS.get, tz)
0 commit comments