思路
1. 获取时间
可以采用的方式有直接获取系统时间System.currentTimeMillis()
或者使用Calendar
类获取时间
2. 处理时间
- 在使用
Calendar
时,可以直接由Calendar
的set
方法对于时间进行设置 - 由于
Calendar
的时间格式并不是我们希望得到的Linux时间戳格式,所以我们需要使用时间格式模板,通过生成与解析方法进行转换,得到最终的Linux时间戳的时间格式
注意
Calendar 的时间设置与北京时间相差八小时,当直接设置当前的小时数据时,需考虑到这一点
例:如果需要北京时间23:00:00,则需设置HOUR_OF_DAY = 15
问题
在Kotlin在线编辑器中运行时,上面注意
中的处理是没有问题的,会得到正确结果;而在Android中实际使用时,却应该使用标准的设置,即设置HOUR_OF_DAY = 23
造成这样结果的原因还不清楚,欢迎留言
实现
自己写了几种可能会常用的获取时间戳的函数,供大家直接使用,代码使用Kotlin
实现
得到当前的时间戳
fun getCurrentTimeStamp(): String {
var time = System.currentTimeMillis()
var nowTimeStamp = (time / 1000).toString()
return nowTimeStamp
}
得到前一小时的时间戳
fun getTimeStampAtOneHourAgo(): String {
var calendar = Calendar.getInstance()
calendar.setTimeInMillis(System.currentTimeMillis())
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1)
var template = SimpleDateFormat("dd/MM/yyyy HH:mm:ss") // SimpleDateFormat
var timeStr = template.format(calendar.time) // String
return (template.parse(timeStr).time / 1000).toString()
}
得到当天23:59: 59 的时间戳
fun getTimeStampAtTheEndOfDay(): String {
var calendar = Calendar.getInstance()
calendar.setTimeInMillis(System.currentTimeMillis())
calendar.set(Calendar.HOUR_OF_DAY, 23)
calendar .set(Calendar.MINUTE, 59)
calendar.set(Calendar.SECOND, 59)
calendar.set(Calendar.MILLISECOND, 59)
var template = SimpleDateFormat("dd/MM/yyyy HH:mm:ss") // SimpleDateFormat
var timeStr = template.format(calendar.time) // String
return (template.parse(timeStr).time / 1000).toString()
}
传入时间字符串及模板,返回时间的模板字符串
fun string2Date(str: String, format: String): Date {
try {
return SimpleDateFormat(format).parse(str)
} catch (e: ParseException) {
e.printStackTrace()
}
return Date()
}
一个好用的在线Linux时间戳转换器
http://tool.chinaz.com/Tools/unixtime.aspx
更新时间
7/10/2018
网友评论