Java常用日期类 SimpleDateFormat格式化日期 currentTimeMillis函数说明
- 2016-08-02 10:06:00
- admin
- 原创 1550
一、Java常用日期类
1、java.sql.Date继承java.util.Date;
2、Date无法设置毫秒,不建议使用Date修改时间;
3、Calendar调用getTime获取时间对象是经过new出来的;
4、Calendar默认宽松模式,设置的日期字段可以溢出,调用get函数会触发日期计算;
二、SimpleDateFormat格式化日期
1、java.text.Format子类DateFormat、MessageFormat、NumberFormat;
2、DateFormat子类SimpleDateFormat,SDF多线程不安全,可以使用线程局部变量保证安全;
3、SimpleDateFormat默认宽松模式,解析的日期字段可以溢出,返回的时间对象经过重新计算;
日期格式化:
public class DateFormatTest {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String text = df.format(now);
System.out.println(text);
}
}
字符串是否是日期:
public static boolean isDate(String dateStr) {
try {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
Date date = df.parse(dateStr);
String realDataStr = df.format(date);
if (!dateStr.equals(realDataStr))
return false;
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
三、currentTimeMillis函数
1、时间换算:1秒=1000毫秒,1毫秒=1000微秒,1微秒=1000毫微秒,毫微秒=纳秒;
2、nanoTime返回虚拟机的计时器的当前纳秒值,只能用于计时,与日期时间无关;
3、2038年有符号整数表达的时间将会溢出;
public static void testTimeMillis() {
long beginTime = System.currentTimeMillis();
long beginNano = System.nanoTime();
long endTime = System.currentTimeMillis();
long endNano = System.nanoTime();
System.out.println(beginTime);
System.out.println(endTime);
System.out.println("diff1 is " + (endTime - beginTime));
System.out.println(beginNano);
System.out.println(endNano);
System.out.println("diff2 is " + (endNano - beginNano));
}
输出:
1476882336328
1476882336328
diff1 is 0
1152734306175
1152734307293
diff2 is 1118