Skip to content

Commit ceefb2a

Browse files
MichaelGHSegclaude
andcommitted
Replace SimpleDateFormat with java.time.Instant for timestamp parsing
Instant.parse() handles all ISO 8601 formats natively, avoids deprecated SimpleDateFormat, and throws DateTimeParseException with clear context on invalid input instead of returning null. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8c38b23 commit ceefb2a

File tree

1 file changed

+2
-13
lines changed

1 file changed

+2
-13
lines changed

e2e-cli/src/main/kotlin/cli/Main.kt

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ import com.google.gson.reflect.TypeToken
55
import com.segment.analytics.Analytics
66
import com.segment.analytics.Callback
77
import com.segment.analytics.messages.*
8-
import java.text.SimpleDateFormat
8+
import java.time.Instant
99
import java.util.Date
10-
import java.util.Locale
11-
import java.util.TimeZone
1210
import java.util.concurrent.CountDownLatch
1311
import java.util.concurrent.TimeUnit
1412
import java.util.concurrent.atomic.AtomicBoolean
@@ -187,14 +185,5 @@ fun sendEvent(analytics: Analytics, event: Map<String, Any>) {
187185
}
188186

189187
private fun parseTimestamp(iso: String): Date {
190-
val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US)
191-
format.timeZone = TimeZone.getTimeZone("UTC")
192-
return try {
193-
format.parse(iso)!!
194-
} catch (_: Exception) {
195-
// Fallback: try without millis
196-
val fallback = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US)
197-
fallback.timeZone = TimeZone.getTimeZone("UTC")
198-
fallback.parse(iso)!!
199-
}
188+
return Date.from(Instant.parse(iso))
200189
}

0 commit comments

Comments
 (0)