AWS Lambdaでプログラムを実行したタイムゾーンなど
Lambdaで日本時間に合わせてバッチを実行させたい時などどうすればよいか試してみた
テストコード
test.scala
def handler(inputStream: InputStream, outputStream: OutputStream, context: Context): Unit = {
//DateTime.now().getZone.getID()
context.getLogger.log(s"DateTime.now().getZone.getID() : ${DateTime.now().getZone.getID()}")
//DateTime.now()
context.getLogger.log(s"DateTime.now() : ${DateTime.now()}")
//DateTime.now(DateTimeZone.forID("Asia/Tokyo"))
context.getLogger.log(s"""DateTime.now(DateTimeZone.forID("Asia/Tokyo")) : ${DateTime.now(DateTimeZone.forID("Asia/Tokyo"))}""")
//LocalDate.now
context.getLogger.log(s"LocalDate.now : ${LocalDate.now}")
//LocalDate.now(DateTimeZone.forID("Asia/Tokyo"))}
context.getLogger.log(s"""LocalDate.now(DateTimeZone.forID("Asia/Tokyo")) : ${LocalDate.now(DateTimeZone.forID("Asia/Tokyo"))}""")
//LocalDateTime.now
context.getLogger.log(s"LocalDateTime.now : ${LocalDateTime.now}")
//LocalDateTime.now(DateTimeZone.forID("Asia/Tokyo"))}
context.getLogger.log(s"""LocalDateTime.now(DateTimeZone.forID("Asia/Tokyo")) : ${LocalDateTime.now(DateTimeZone.forID("Asia/Tokyo"))}""")
}
日本時間の2017/07/08 20:14頃に実行した
日本時間を前提としてプログラムを組む場合はDateTime.now(DateTimeZone.forID("Asia/Tokyo"))として取得するのがよさそう
DateTime.now().getZone.getID() : UTC
DateTime.now() : 2017-07-08T11:14:20.798Z
DateTime.now(DateTimeZone.forID("Asia/Tokyo")) : 2017-07-08T20:14:20.938+09:00
LocalDate.now : 2017-07-08
LocalDate.now(DateTimeZone.forID("Asia/Tokyo")) : 2017-07-08
LocalDateTime.now : 2017-07-08T11:14:20.941
LocalDateTime.now(DateTimeZone.forID("Asia/Tokyo")) : 2017-07-08T20:14:20.942