Java获取系统时间有以下四种常见方法


方法一:通过Date类来获取当前时间


Date now=new Date();    

System.ou.println(now.getTime());

//设置日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

System.out.println(sdf.format(now));  

方法二:通过System类的currentTimeMillis方法来获取当前时间 


//可直接获取时间
System.out.println(System.currentTimeMillis());  

//设置想要的日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println(sdf.format(System.currentTimeMillis()));

方法三:通过Calendar类来获取当前时间  


/**
 * 可以对每个时间域单独修改   
 */
Calendar c = Calendar.getInstance();

int year = c.get(Calendar.YEAR);  

int month = c.get(Calendar.MONTH);   

int date = c.get(Calendar.DATE);    

int hour = c.get(Calendar.HOUR_OF_DAY);   

int minute = c.get(Calendar.MINUTE);   

int second = c.get(Calendar.SECOND);    

System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second);    

方法四:通过Date类来获取当前时间


Date date = new Date();    

String year = String.format("%tY", date);   

String month = String.format("%tm", date);   

String day = String.format("%td", date);    

System.out.println("现在是:"+year+"年"+month+"月"+day+"号");   



 拓   展  《《《《《《《《《《《《《



1.日期格式字符串如下:

2.在JAVA中有六个与时间有关的类

1、java.util.Date  日期格式为:年月日时分秒

java.util.Date 就是在除了SQL语句的情况下面使用;常用的表示时间的类,我们通常格式化或者得到当前
时间都是用他

它是java.sqlDate,java.sql.Time,java.sql.Timestamp的父类,若在Java中的时间使用标准类库的
java.util.Date,其表示特定的瞬间,精确到毫秒。是用距离一个固定时间点的毫秒数(可正可负,long类
型)表达一个特定的时间点。但是从JDK1.1 开始,就使用Calendar 类实现日期和时间字段之间转换,使用
DateFormat 类来格式化和分析日期字符串。因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的
大部分方法已经过期,不建议使用了,它们都被java.util.Calendar类所取代。



2、java.sql.Date  日期格式为:年月日[只存储日期数据不存储时间数据]

屏蔽了java.util.Date类的时间有关的方法(形如:hh:mm:ss),因此,不可以通过这个类访问时间有关的信
息,比如,你通过sqlDate.getHour()方法去访问小时信息,此方法会抛出一个IllegalArgumentException
异常。这是因为java.sql.Date在继承java.util.Date类的时候对父类进行了重写,禁用了时间访问的方法。
之所以这么处理,是为了和数据库的Date数据类型相匹配,数据库的Date数据类行只是保存日期有关的字段。
  
java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分它都有getTime方法返回毫秒数,自然
就可以直接构建,一般我们在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和
ResultSet的getDate()方法的第2个参数都是它。

Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型 



继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());



3、java.sql.Time  日期格式为:时分秒  

屏蔽了java.util.Date的日期有关的字段(形如:yyyy-MM-dd),因此,不能通过这个类访问日期有关的信
息,比如:如果你通过sqlTime.getYear()方法去获取年有关的信息,此方法会抛出一个
IllegalArgumentException异常。这是因为java.sql.Time在继承java.util.Date类的时候对父类进行了
重写,禁用了日期访问的方法。之所以这么处理,是为了和数据库的Time数据类型相匹配,数据库的Time数据
类行只是保存时间有关的字段。



4、java.sql.Timestamp  日期格式为:年月日时分秒纳秒(毫微秒)

字段则对java.util.Date这个类进行了扩充,它在java.util.Date类的基础上增加了毫秒的时间访问控制,
因此,你可以通过getNanos()方法去获取时间的毫微秒数(注意此处获取的时间是以毫微秒为单位的,1秒
等于十亿毫微秒),同样的,这也是为了和数据库中的Timestamp数据类型进行匹配。



5、java.text.SimpleDateFormat  (DateFormat的直接子类) 

SimpleDateFormat 是一个以语言环境相关的方式来格式化和分析日期的具体类。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat
中的getTimeInstance、getDateInstance 或 getDateTimeInstance 来新的创建日期-时间格式化程序。



6、java.util.Calendar (抽象类) 

是java.util.Date类的一个更加深入,更加全面的替代。

java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间
的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表
示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

与其他语言环境敏感类一样,Calendar 提供了一个类方法getInstance,以获得此类型的一个通用的对象。
Calendar的getInstance方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。 

3.创建 SimpleDateFormat 对象时必须指定转换格式

转换格式区分大小写,yyyy--年份,MM--月份,dd--日期,HH--24 进制的小时,hh--12 进制的小时,mm--分钟,ss--秒。

/**
* 时间转化为字符串
*/

Date date =new Date();
//设置日期格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str=sdf.format(date);
System.out.println("The time is "+str);



/**
* 字符串转化为时间
*/
Date date1=null;
//设置日期格式
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
String str1="2015-1-25";
try {
date1=sdf1.parse(str1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(date1);

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐