java中跟时间相关的类
2017-08-02 20:59
197 查看
1.SimpleDateFormat
public class SimpleDateFormat extends DateFormatSimpleDateFormat是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
SimpleDateFormat允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用
DateFormat中的
getTimeInstance、
getDateInstance或
getDateTimeInstance创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用
applyPattern方法修改格式化方式。
SimpleDateFormat类的继承关系:
java.lang.Object
|
+----java.text.Format
|
+----java.text.DateFormat
|
+----java.text.SimpleDateFormat
下面是个小例子:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 (1~24) K 时 在上午或下午 (0~11) z 时区 */ public class simpleDateFormat { public static void main(String[] args) { //利用构造函数设置格式化模板 SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString() SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); SimpleDateFormat myFmt4=new SimpleDateFormat( "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); //Date 表示距离1970-01-01 00:00:00的毫秒数,值与时区无关。 Date now = new Date(); //执行格式化功能 System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); //applyPattern方法设置格式化模板 myFmt.applyPattern("yyyy-MM-dd"); System.out.println(myFmt.format(now)); //parse()方法用于将输入的特定字符串转换成Date类的对象 Date date = null; String s = "2017-12-29 上午12:03"; try { date = myFmt.parse(s); } catch (ParseException e) { e.printStackTrace(); } //toString时用本地时区输出,如Thu Jun 30 17:12:57 CST 2016,CST表示China Standard Time。 System.out.println("date对象为" + date);//也可以直接利用toString方法输出 System.out.println("date对象为" + date.toString()); } }
效果:
2017年12月29日 11时11分53秒
17/12/29 11:11
2017-12-29 11:11:53
2017年12月29日 11时11分53秒 星期五
一年中的第 363 天 一年中第52个星期 一月中第5个星期 在一天中11时 CST时区
2017-12-29
date对象为Fri Dec 29 00:00:00 CST 2017
date对象为Fri Dec 29 00:00:00 CST 2017
下面是一个格式化时间的工具类:
public class FormatDateTime { public static String toLongDateString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); return myFmt.format(dt); } public static String toShortDateString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH时mm分"); return myFmt.format(dt); } public static String toLongTimeString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS"); return myFmt.format(dt); } public static String toShortTimeString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm"); return myFmt.format(dt); } public static void main(String[] args) { Date now=new Date(); System.out.println(FormatDateTime.toLongDateString(now)); System.out.println(FormatDateTime.toShortDateString(now)); System.out.println(FormatDateTime.toLongTimeString(now)); System.out.println(FormatDateTime.toShortTimeString(now)); } }
调用的结果如下:
2017年12月29日 10时46分09秒 星期五
17年12月29日 10时46分
10 46 09 0673
17/12/29 10:46
2.Date
Date类的继承关系:java.lang.Object
|
+----java.util.Date
应用举例:
import java.util.Date; public class dateTest { public static void main(String[] args){ //第一种构造函数.无参构造创建的对象可以获取本机的当前日期和时间 Date date1=new Date(); //Date默认的时间表示顺序是:星期几、月、日、小时、分、秒、年。见下面的输出: System.out.println(date1); System.out.println(date1.toString()); //第二种构造函数。public Date(long date); //首先,计算机将自身时间的“公元”设置为1970年1月1日00:00:00 GMT(格林威治时间)。 //其次,根据参数date,正值表示公元后的时间,负值表示公元前的时间; //然后,创建一个 Date对象date2,并将其初始化为"公元"后的指定毫秒数1000。 //最后,运行该java程序的计算机是在北京时区,date2表示的时间为:1970年1月1日08:00:01 Date date2=new Date(1000); System.out.println(date2); //public long getTime(); //返回相对于1970年1月1日00:00:00 GMT而言,此 Date对象表示的毫秒数。 //运行该java程序的计算机是在北京时区,date2.getTime()表示相对于1970年1月1日08:00:00经过的毫秒数。 System.out.println(date2.getTime()); //System类的静态方法public long currentTimeMillis()获取系统当前时间。 //运行该java程序的计算机是在北京时区,这个值是从1970年1月1日08:00:00到目前时刻走过的毫秒数。 System.out.println(new Date().getTime()); System.out.println(System.currentTimeMillis()); //public void setTime(long time); //将Date对象设置为相对于1970年1月1日00:00:00 GMT后的time毫秒的时间点。 不再举例 } }
执行结果:
Fri Dec 29 14:04:59 CST 2017
Fri Dec 29 14:04:59 CST 2017
Thu Jan 01 08:00:01 CST 1970
1000
1514527499432
1514527499432
3.Calendar
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>
Calendar类的继承关系:
java.lang.Object
|
+----java.util.Calendar
同样,Calendar类也在java.util包中。单词Calendar中文翻译为日历,实际上,在历史上有着许多种计时的方法。所以为了计时的统一,必需制定一个日历的标准。那现在最为普及和通用的日历标准就是"Gregorian Calendar"。也就是我们在讲述年份时常用"公元**年"。Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。使用Calendar类的static方法getInstance(),就可以初始化一个日历对象(获得一个"GreogrianCalendar"对象实例)。
Calendar对象可以调用以下三个set方法,将日历翻到任何一个时刻,当参数year取负值时表示公元前。
void set(int year, int month, int date) ; void set(int year, int month, int date, int hourOfDay, int minute) ; void set(int year, int month, int date, int hourOfDay, int minute, int second) ;Calendar对象可以调用public int get(int field)方法获取年份、月份、小时、星期等信息。其中参数field的有效值由Calendar的静态常量指定。
应用举例:
import java.util.Calendar; import java.util.Date; class CalendarTest{ public static void main(String[] args) { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); //比当前月份少1 int month = cal.get(Calendar.MONTH); //date表示日期,day表示天数,所以date与day_of_month相同 int date = cal.get(Calendar.DATE); int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); //表示本周的第几天,从周日开始计算 int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int dayOfYear = cal.get(Calendar.DAY_OF_YEAR); //12小时制 int hour = cal.get(Calendar.HOUR); //24小时制 int hourOfDay = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); int millisecond = cal.get(Calendar.MILLISECOND); int maxDate = cal.getActualMaximum(Calendar.DATE); System.out.println("现在的年份为:" + year); System.out.println("现在的月份为:" + month); System.out.println("现在的号为:" + date); System.out.println("现在的号为:" + dayOfMonth); System.out.println("现在是星期:" + (dayOfWeek-1)); System.out.println("现在过了的天数为:" + dayOfYear); System.out.println("现在几点:" + hour); System.out.println("现在几点:" + hourOfDay); System.out.println("现在几分:" + minute); System.out.println("现在几秒:" + second); System.out.println("现在几毫秒:" + millisecond); System.out.println("本月最后一天是:" + maxDate); } }
输出结果为:
现在的年份为:2017
现在的月份为:11
现在的号为:29
现在的号为:29
现在是星期:5
现在过了的天数为:363
现在几点:2
现在几点:14
现在几分:36
现在几秒:29
现在几毫秒:450
本月最后一天是:31
4.Date和Calendar之间转换
代码如下:import java.util.Calendar; import java.util.Date; public class DateToCalendar { public static void main(String[] args) { //Calendar → Date 的转换 Calendar calendar = Calendar.getInstance(); // 从一个Calendar对象中获取Date对象 Date now = calendar.getTime(); System.out.println(now); // Date → Calendar 的转换 // Calendar/GregorianCalendar都没有构造函数可以接受Date对象 //所以我们必需先获得一个Calendar实例,然后设置Date对象 Calendar cal = Calendar.getInstance(); cal.setTime(now); } }
5.代码的执行时间
public String exportData(){ Date date = new Date(); //核心业务代码 String msg = "一大批需要执行的业务代码"; Date endDate = new Date(); long diff = endDate.getTime() - date.getTime(); //此处最好使用日志相关的方法,入logger.info(); System.out.println("导出商品档案条,耗时"+diff+"毫秒"); return msg; }
相关文章推荐
- 8.4-全栈Java笔记:时间处理相关类(下)
- java API 跟时间相关类:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- java一次多线程的怪异时间和偶然发现相关解释
- Java 日期时间 相关类简介
- 如何处理java相关网络协议占内存的问题啊?为何时间越长,内存占用越大?
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat
- java时间处理相关(较全)
- 【转载】Java垃圾回收内存清理相关(虚拟机书第三章),GC日志的理解,CPU时间、墙钟时间的介绍
- java 时间相关类
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar
- JAVA 时间相关
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- java中的时间相关类简单应用
- Java 相关时间工具类
- java中日期和时间相关类(包括java8中新增java.time包)
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat
- java 时间计算 格式化的相关记录(后续)
- java 获取时间相关总结
- Java中Date及Timestamp时间相关内容