1. 程式人生 > >Scala日期操作

Scala日期操作

前言

本文主要記錄我自己對日期格式資料的一些常用操作,主要目的是備忘,方便隨時查閱。本文沒有將程式碼封裝為函式,如果有需要的可以自行封裝,注意每一部分的程式碼會依賴前面程式碼裡的變數。

程式碼可以直接在spark-shell裡執行(在scala裡有的包沒有)

1、字串轉日期

import java.text.SimpleDateFormat
import org.joda.time.DateTime
val dateStr = "2018-06-01"
val pattern = "yyyy-MM-dd"
val date = new SimpleDateFormat(pattern).parse(dateStr)
val
dateTime = new DateTime(date) println(date) println(dateTime)
Fri Jun 01 00:00:00 CST 2018
2018-06-01T00:00:00.000+08:00

2、日期轉字串

將上面的日期轉成其他格式的字串

println(new SimpleDateFormat("yyyyMMdd").format(date))
20180601

3、字串轉時間戳

println(date.getTime)
println(date.getTime)

4、計算時間差

val startDateStr = "2018-03-21"
val endDateStr = "2018-03-22" val startDate = new SimpleDateFormat(pattern).parse(startDateStr) val endDate = new SimpleDateFormat(pattern).parse(endDateStr) val between = endDate.getTime - startDate.getTime val second = between / 1000 val hour = between / 1000 / 3600 val day = between / 1000 / 3600 / 24 val year = between / 1000
/ 3600 / 24 / 365

如果需要結果為小數,以hour舉例

import java.text.DecimalFormat
val hour: Float = between.toFloat / 1000 / 3600
val decf: DecimalFormat = new DecimalFormat("#.00")
println(hour)
println(decf.format(hour)) //格式化為兩位小數
24.0
24.00

參考資料