一、相关类
1、Date:
Date表示特定的瞬间,精确到毫秒,Date中的相应方法已废弃,从JDK 1.1开始,应该使用Calendar类实现日期和时间字段之间转换。
2、DateFormat:
DateFormat是日期/时间格式化子类的抽象类,格式化并解析日期或时间,可以进行日期 -> 文本 ,文本-> 日期的转换。子类SimpleDateFormat。
3、Calendar:
Calendar是日历抽象类,可通过其获取日期时间。推荐使用。
package datetext; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Text { public static void main(String[] args) { Date d = new Date(); System.out.println(d);//第一种表示方法,Sat Jul 22 20:18:10 CST 2017 System.out.println("----------------------"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(d));//第二种表示方法,2017-07-22 20:18:10|SimpleDateFormat的用法 System.out.println("----------------------");
//老方法,慢慢的被淘汰 System.out.println(d.getTime()); System.out.println(d.getYear()); System.out.println(d.getMonth()+1); System.out.println(d.getDate()); System.out.println(d.getHours()); System.out.println(d.getMinutes()); System.out.println(d.getSeconds()); System.out.println("----------------------"); //新方法,用Calendar Calendar c = Calendar.getInstance(); //Calendar.getInstance() 使用默认时区和语言环境获得一个日历。 System.out.println(c.get(Calendar.YEAR)); System.out.println(c.get(Calendar.MONTH)+1);//注意:月份需要+1表示当前月 System.out.println(c.get(Calendar.DATE)); System.out.println(c.get(Calendar.HOUR)); System.out.println(c.get(Calendar.MINUTE)); System.out.println(c.get(Calendar.SECOND)); System.out.println("----------------------"); //SimpleDateFormat Date d2 = new Date(); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf2.format(d2)); Calendar c2 =Calendar.getInstance(); Date d_cal = c2.getTime(); System.out.println(sdf2.format(d_cal)); } }
二、SimpleDateFormat
SimpleDateFormat
是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。
SimpleDateFormat
使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat
中的 getTimeInstance
、getDateInstance
或 getDateTimeInstance
来新的创建日期-时间格式化程序。
1、日期和时间模式
2、例子:给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56
三、表示国际时间(用Calendar)
package datetext; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class Text { public static void main(String[] args) { Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(d)); System.out.println("----------------------"); /*String[] ids = TimeZone.getAvailableIDs(); for(int i=0;i<ids.length;i++){ System.out.println(ids[i]);//输出所有地区的ID }*/ //以日本为例 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("Japan")); //getTimeZone(),获得时区 System.out.println(c.get(Calendar.HOUR)); //12小时制 System.out.println(c.get(Calendar.HOUR_OF_DAY)); //24小时制 } }
四、把长整型数设置成一个特定的时间点:
package datetext; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Text { public static void main(String[] args) { Date d = new Date(); //getTime(),返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 System.out.println(d.getTime());//输出值为:1500733409509 Calendar c = Calendar.getInstance(); c.setTimeInMillis(1500733409509l);//setTimeInMillis(long millis), //用给定的 long 值设置此 Calendar 的当前时间值。 Date dd = c.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(dd)); //输出值为 2017-07-22 22:23:29 } }
五、Timestamp(时间戳,可以精确到毫秒)
package datetext; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Text { public static void main(String[] args) { Date d = new Date(); System.out.println(d.getTime());//输出值为:1500733409509 Calendar c = Calendar.getInstance(); c.setTimeInMillis(1500733409509l); Date dd = c.getTime(); Timestamp ts = new Timestamp(1500733409509l); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS"); System.out.println(sdf.format(ts)); //输出值为 2017-07-22 22:23:29:509 } }