From 4b018f926a7dc41d1a3a3c10053113d6ba6a0d1a Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 19 Sep 2019 12:24:15 -0700 Subject: [PATCH] Added dateToGmt() function. --- .../net/thauvin/erik/akismet/Akismet.kt | 19 +++++++++++++++++++ .../net/thauvin/erik/akismet/AkismetTest.kt | 17 +++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt index d972fd7..79971b0 100644 --- a/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt +++ b/src/main/kotlin/net/thauvin/erik/akismet/Akismet.kt @@ -39,6 +39,10 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.logging.HttpLoggingInterceptor import java.io.IOException +import java.time.LocalDateTime +import java.time.ZoneId +import java.time.ZoneOffset +import java.util.Date import java.util.logging.Level import java.util.logging.Logger import javax.servlet.http.HttpServletRequest @@ -423,6 +427,21 @@ open class Akismet(apiKey: String, blog: String) { other = other)) } + /** + * Convert a [Date][java.util.Date] to a UTC timestamp (xxxGmt parameters). + */ + @JvmOverloads + fun dateToGmt(date: Date, zoneId: ZoneId = ZoneId.systemDefault()): String { + return dateToGmt(LocalDateTime.ofInstant(date.toInstant(), zoneId)) + } + + /** + * Convert a [LocalDateTime][java.time.LocalDateTime] to a UTC timestamp (xxxGmt parameters). + */ + fun dateToGmt(date: LocalDateTime): String { + return date.atZone(ZoneOffset.UTC)?.toEpochSecond().toString() + } + /** * * Execute an Akismet REST API method. diff --git a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt index a93f904..dec394a 100644 --- a/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt +++ b/src/test/kotlin/net/thauvin/erik/akismet/AkismetTest.kt @@ -33,6 +33,7 @@ package net.thauvin.erik.akismet import org.mockito.Mockito +import org.testng.Assert.assertEquals import org.testng.Assert.assertFalse import org.testng.Assert.assertTrue import org.testng.Assert.expectThrows @@ -40,7 +41,11 @@ import org.testng.annotations.BeforeClass import org.testng.annotations.Test import java.io.File import java.io.FileInputStream +import java.time.LocalDateTime +import java.time.ZoneId +import java.time.ZoneOffset import java.util.Collections +import java.util.Date import java.util.Properties import java.util.logging.ConsoleHandler import java.util.logging.Level @@ -152,5 +157,17 @@ class AkismetTest { authorUrl = authorUrl, content = content, isTest = true), "check_comment(request) -> true") + @Test + fun dateToGmtTest() { + val date = Date() + val localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()) + assertEquals( + akismet.dateToGmt(date), + akismet.dateToGmt(localDateTime), + "dateGmt(date) == dateGmt(localDateTime)") + assertEquals( + localDateTime.atOffset(ZoneOffset.UTC).toEpochSecond(), + akismet.dateToGmt(date).toLong(), + "localDateTime = dateGmt") } }