获取毫秒数
工作中基本上都会需要使用对时间的操作,java也提供了一些时间相关的类。
下面代码可以获取自 1970年1月1日 00时00分00秒 000毫秒 到当前的毫秒数。
package com.monkey1024.date; /** * 获取自 1970年1月1日 00时00分00秒 000毫秒 到当前的毫秒数 * 演示String和StringBuffer分别进行字符串拼接所需要的毫秒数 */ public class DateTest01 { public static void main(String[] args) { long now = System.currentTimeMillis(); System.out.println(now); String s = ""; StringBuffer sb = new StringBuffer(); //获取拼接前的毫秒数 long before = System.currentTimeMillis(); for(int i=0; i<=100; i++){ // s += i;拼接String // sb.append(i);拼接StringBuffer } //拼接后的毫秒数 long after = System.currentTimeMillis(); //总共耗时毫秒 System.out.println(after - before); } }
获取系统当前时间
在java.util包下面有个Date类,通过这个类可以获取系统的当前时间
package com.monkey1024.date; import java.util.Date; /** * * 获取系统当前时间 * */ public class DateTest02 { public static void main(String[] args) { //获取系统当前时间 Date nowTime = new Date(); System.out.println(nowTime); Date d1 = new Date(0);//如果构造方法中参数传为0代表的是1970年1月1日 System.out.println(d1); } }
日期格式化类
上面代码中打印的日期格式不太符合中国的风格,国人一般习惯的时期格式是:
1970年01月01日 00时00分00秒
在java.text包下有个SimpleDateFormat类,通过这个类可以将日期修改为我们想要的风格
package com.monkey1024.date; import java.text.SimpleDateFormat; import java.util.Date; /** * * 日期格式化 * */ public class DateTest02 { public static void main(String[] args) { //获取系统当前时间 Date nowTime = new Date(); System.out.println(nowTime); Date d1 = new Date(0);//如果构造方法中参数传为0代表的是1970年1月1日 System.out.println(d1); //1.创建日期格式化对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS"); //可以改成其他格式 //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //2.开始格式化(Date--->String) String strTime = sdf.format(nowTime); System.out.println(strTime); } }
上面代码中需要注意大小写区分:
y表示年
M表示月
d表示日
H表示小时
m表示分钟
s表示秒
S表示毫秒
将String类型转换为Date类型
package com.monkey1024.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * * 将String类型转换为Date类型 * */ public class DateTest03 { public static void main(String[] args) { String strTime = "2017年01月01日 00:00:00 000"; //将String日期转换成日期类型Date //String-->Date //1.创建日期格式化对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS"); //格式不能随意,应该和上面的字符串格式相同。 //2.将字符串转换成日期类型 Date d = new Date(); try { d = sdf.parse(strTime); } catch (ParseException e) { e.printStackTrace(); } System.out.println(d); } }
Calendar简介
Calendar 类是一个抽象类,为操作日历方面提供了一些方法
package com.monkey1024.date; import java.util.Calendar; /** * * Calendar * */ public class DateTest04 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //查看当前日期是星期几 int i = c.get(Calendar.DAY_OF_WEEK); System.out.println(i); //外国人将周日看做是第一天 System.out.println(c.get(Calendar.DAY_OF_MONTH)); } }
小练习:
1.编写代码获取2008年8月8日是星期几?
2.算一下你来到这个世界多少天?
1.分析:首先获取2008年8月8日的Date类型,然后通过Calendar里面的DAY_OF_WEEK属性可以判断出示星期几
package com.monkey1024.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * 编写代码获取2008年8月8日是星期几 * */ public class Exercise01 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //获取2008-8-8的日历 String strTime = "2008-08-08"; Date d = new Date(); try { d = new SimpleDateFormat("yyyy-MM-dd").parse(strTime); } catch (ParseException e) { e.printStackTrace(); } c.setTime(d); System.out.println(c.get(Calendar.DAY_OF_WEEK)); } }
2.分析:获取出生日期和当前日期的Date类型,然后将两个日期的毫秒值做减法,之后用这个毫秒值除以1000,再除以60,再除以60,再除以24得到天
package com.monkey1024.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* 算一下你来到这个世界多少天
*
*/
public class DateTest04 {
public static void main(String[] args) throws ParseException {
//生日
String birthday = "2016年06月15日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//将生日字符串转换成日期对象
Date d1 = sdf.parse(birthday);
Date d2 = new Date();
//将两个日期的毫秒值做减法
long time = d2.getTime() - d1.getTime();
//除以1000,再除以60,再除以60,再除以24得到天
System.out.println(time / 1000 / 60 / 60 / 24 );