1.先看一些简单的。这里用到的包和类见import。
import java.text.SimpleDateFormat
import java.time.{LocalDate, LocalTime}
import java.util.Date
object TimeAndDate {
def main(args: Array[String]): Unit = {
//1-时间戳转日期
val timeStamp: Long = System.currentTimeMillis()
val date = new Date(timeStamp)
println(date.toString)
// Sun Mar 01 08:40:27 CST 2020、
//2-时间戳转固定格式的日期
val format = new SimpleDateFormat("yyyy-MM-dd")
val dateStr: String = format.format(date)
println(dateStr)
//2020-03-01
//3-字符串转时间戳
val dateDate: Date = format.parse(dateStr) //获得的是Date类型,获得时间戳还需要getTime
val dateLong: Long = dateDate.getTime // ->获得的是相应日期凌晨0点的时间戳 13位到毫秒
println(dateLong)
//1582992000000
//4-获取系统当前的日期
val now: LocalDate = LocalDate.now
println(now)
//2020-03-01
//要获得String 只要toString可以
//5-获取系统当前的时间
val time: LocalTime = LocalTime.now()
println(time)
//08:47:26.411 可以看到会带有毫秒呢
}
}
2.再来一些稍微复杂但也较常用的。
比如给你某个时间戳或日期字符串,让你获得这个时间戳所在的周一,月的一号,年的第一天的日期/或这些日期对应的时间戳
再比如一周前,一周后,一天前,一天后这样的需求。
import org.joda.time.DateTime
object TimeAndDate {
def main(args: Array[String]): Unit = {
//1-给定时间戳给出周月年的日期
//传入的参数为Int 即第几天
val time = new DateTime(System.currentTimeMillis())
val pattern = "yyyy-MM-dd"
//------------------------获取周一,月的一号,年的第一天的时间戳---------------------------------
val firstDayOfWeek: String = time.withDayOfWeek(1).toString(pattern)
val firstDayOfMonth: String = time.withDayOfMonth(1).toString(pattern)
val firstDayOfYear: String = time.withDayOfYear(1).toString(pattern)
val secondDayOfWeek: String = time.withDayOfWeek(2).toString(pattern)
val secondDayOfMonth: String = time.withDayOfMonth(2).toString(pattern)
val secondDayOfYear: String = time.withDayOfYear(2).toString(pattern)
val res1: String =
s"""firstDayOfWeek:$firstDayOfWeek,
| firstDayOfMonth:$firstDayOfMonth,
| firstDayOfYear:$firstDayOfYear""".stripMargin
val res2: String =
s"""secondDayOfWeek:$secondDayOfWeek,
| secondDayOfMonth:$secondDayOfMonth,
| secondDayOfYear:$secondDayOfYear""".stripMargin
println(res1)
// firstDayOfWeek:2020-02-24,
// firstDayOfMonth:2020-03-01,
// firstDayOfYear:2020-01-01
println(res2)
// secondDayOfWeek:2020-02-25,
// secondDayOfMonth:2020-03-02,
// secondDayOfYear:2020-01-02
//先来看下这几个方法的作用,这几个都是无参的,方法顾名思义,但是返回的是DateTime.Property类型
//需要.get()返回结果 返回是Int型
println(s"time.dayOfMonth().get():${time.dayOfMonth().get() }")
println(s"time.dayOfWeek().get():${time.dayOfWeek().get()}")
println(s"time.dayOfYear.get(): ${time.dayOfYear().get()}")
println(s"time.hourOfYear.get():${time.hourOfDay().get()}")
println(s"time.millisOfDay.get():${time.millisOfDay.get()}")
println(s"time.millisOfSecond.get():${time.millisOfSecond().get()}")
//而使用相应的get方法可以直接得到结果
println(time.getDayOfMonth)//1
println(time.getDayOfWeek)//7
println(time.getDayOfYear)//61
println(time.getHourOfDay)//14
println(time.getWeekOfWeekyear)//9
println(time.getWeekyear)//2020
println(time.minusDays(1).toString(pattern))//2020-02-29 前一天
println(time.plusDays(1).toString(pattern))//2020-03-02 后一天
println(time.withTimeAtStartOfDay())//2020-03-01T00:00:00.000+08:00
println(time.withTimeAtStartOfDay().getMillis)//1582992000000
//-----------------------获取周一,月的一号,年的第一天的00:00:00 的时间戳-----------------------------
println(time.withDayOfMonth(1).withTimeAtStartOfDay().getMillis)//1582992000000 ->2020-03-01 00:00:00
println(time.withDayOfWeek(1).withTimeAtStartOfDay().getMillis)//1582473600000 -> 2020-02-24 00:00:00
println(time.withDayOfYear(1).withTimeAtStartOfDay().getMillis)//1577808000000 -> 2020-01-01 00:00:00
}
}
希望有用,如有错误,还望指正,一起学习进步~
Today is a nice day,beautiful sunshine outside,Here comes the spring