今天在做一个日期解析的时间工具的时候出现了问题
问题描述:
第一版本:new SimpleDateFormat("dd/mmm/yyyy:HH:mm:ss Z",Locale.ENGLISH)
此处mmm 和 mm字符重复了,直接就unparaseable了
下面是正确的版本
/**
* Created by Administrator on 2017/7/4.
* 日期时间解析工具
* 出现问题:时间格式上出现了,dd/mmm/yyyy:HH:mm:ss Z;这样是解析不了的,因为有mmm和mm
*/
object DateUtils {
/**
* 10/Nov/2016:00:01:02 +0800 ==>> yyyy-mm--dd HH:MM:SS
*/
//输入文件格式:10/Nov/2016:00:01:02 +0800
val YYYYMMDDHHMM_TIME_FORMAT = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z",Locale.ENGLISH)
//目标日期格式:yyyy-mm--dd HH:MM:SS
val TARGET_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS")
/**
* 获取输入日志时间:long类型
* time:[10/Nov/2016:00:01:02 +0800]
*/
def getTime(time:String) = {
try {
YYYYMMDDHHMM_TIME_FORMAT.parse(time.substring(time.indexOf("[") + 1,time.lastIndexOf("]"))).getTime
}catch{
case e:Exception =>{
0l
}
}
}
/**
*获取时间:yyyy-MM-dd HH:mm:ss
* @param time
*/
def Parse(time:String) = {
TARGET_FORMAT.format(new Date(getTime(time)))
}
def main(args: Array[String]) = {
println(Parse("[10/Nov/2016:00:01:02 +0800]"))
}
}