docs.oracle.com/javase/8/docs/api/java/text/DateFormat.html#parse-java.lang.String-
简而言之就是把字符串的“日期”转为真正的日期。真正的日期会自带一些split的操作。
最近做项目,需要把Date类型的日期转换成毫秒。
/**
* 日期格式化函数,将日志中的日期进行格式化,按照分钟为最小单位,格式化成毫秒
* @param line
*/
private def formatData(line:Date)={
val date=new SimpleDateFormat("yyyy-MM-dd H:mm:ss")
val dateFormated=date.format(line)
val dateFf=date.parse(dateFormated).getTime
dateFf
}
还需要将毫秒值转化成日期格式
/**
*将毫秒值转换成日期格式
*/
private def formatDateMillToMut(mill:Long)={
val date=new Date(mill)
date
}
关于java.text.SimpleDateFormat的parse()方法存在的坑
https://blog.csdn.net/a158123/article/details/54292268
前言
在将字符串转为java.util.Date
对象的时候,为了方便(主要是懒得做日期字符串的正则匹配)就干脆使用了java.text.SimpleDateFormat
的parse()
方法。但是我发现parse()
在解析日期字符串的时候本身存在一些问题。
问题代码
以下是出现问题的代码
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=df.parse("2016--1-01");
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
分析
这段代码我想很多人认为应该是抛出异常吧,但是实际上这段代码的运行结果是
Sun Nov 01 00:00:00 CST 2015
经过源码的调试后才知道2016--1-01
中,月份是可以作为负数识别的,既这个字符串被识别为2016
的1
月之前的2
个月的第一天。(2
个月是因为月份是从0
开始计算的)
解决方案
解决方案如下:
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=df.parse("2016--1-01");
//指定日期/时间解析是否不严格,默认是不严格(true)
df.setLenient(false);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
ps:无法抛出异常是因为SimpleDateFormat类有自动运算日期功能, 只要将setLenient(Boolean boolean)设置为false,强制让他不进行日期运算,就可以检测出异常了。
上述内容官网也有说明。
scala 的时间方面的处理
cnblogs.com/xyt-cathy/p/6868795.html
最近开始写scala程序,发现scala和python的相似度极高,写一下scala时间方面的处理;
1、一个时间戳怎么转化成yyyyMMddHH的格式:
import java.text.SimpleDateFormat import java.util.Date import java.util.Calendar import java.lang.Long import java.util.TimeZone def transformat(date:String,pattern:String):String ={ val myformat = new SimpleDateFormat(pattern) myformat.setTimeZone(TimeZone.getTimeZone("GMT"+8)) val time=new Date(Long.valueof(date)*1000L) myformat.format(time)}
2、怎么将进行时间加减
def addtime(date:String,num:Int):String ={ val myformat = new SimpleDateFormat("yyyyMMddHH") var dnow = new Date() if(date !=""){ dnow=myformat.parse(date)} var cal = Calendar.getInstance() cal.setTime(dnow) cal.add(Calendar.DAY_OF_MONTH,num) val newday= cal.getTime() myformat.format(newday) }
3、怎么对时间进行周末日判断
1 2 3 4 5 6 7 8 9 10 |
|