一、指定显示中国风的时间
分析:
查阅JDK:
// DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
public abstract class DateFormat extends Format
//获取日期格式器,该格式器具有给定语言环境的给定格式化风格。
public static final DateFormat getDateInstance(int style, Locale aLocale)
// 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
要想显示中国风格的时间,则在构造DateFormat对象时传递若干个参数,其中 new Loacle(String language, String country) 构造方法用来根据语言和国家构造一个语言环境。
import java.text.DateFormat ;
import java.util.Date ;
import java.util.Locale ;
public class ChinaDateDemo{
public static void main(String args[]){
DateFormat df1 = null ; // 声明一个DateFormat
DateFormat df2 = null ; // 声明一个DateFormat
df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN")) ; // 得到日期的DateFormat对象
df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN")) ; // 得到日期时间的DateFormat对象
System.out.println("DATE:" + df1.format(new Date())) ; // 按照日期格式化
System.out.println("DATETIME:" + df2.format(new Date())) ; // 按照日期时间格式化
}
};
程序运行结果:
DATE:2012年7月30日
DATETIME:2012年7月30日 下午04时41分51秒 CST
二、实例操作--取得完整日期
分析:使用SimpleDateFormat类可以方便地把一个日期变为指定的格式,所以直接使用此类操作是最简单、最合适的。
package zz.simpledateformatdemo;
import java.text.SimpleDateFormat;
import java.util.Date;
class DateTime {
// 声明日期操作对象,
private SimpleDateFormat sdf = null;
// 得到完整日期,时间格式:yyyy-mm-dd HH:mm:ss.SSS
public String getDate(){
this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return this.sdf.format(new Date());
//return this.sdf.format(sdf.parse("yyyy-MM-dd HH:mm:ss.SSS"));
}
// 得到完整日期,时间格式:yyyy年mm月dd日 HH时mm分ss秒.SSS毫秒
public String getChinaDate(){
this.sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒.SSS毫秒");
return this.sdf.format(new Date());
}
// 得到时间戳: yyyyMMddHHmmssSSS
public String getDateStamp(){
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return this.sdf.format(new Date());
}
}
public class SimpleDateFormatDemo {
public static void main(String []args) {
DateTime dt = new DateTime();
System.out.println("系统时间:" + dt.getDate());
System.out.println("中文时间:" + dt.getChinaDate());
System.out.println("时间戳:" + dt.getDateStamp());
}
}
程序运行结果:
系统时间:2012-07-30 16:36:22.866
中文时间:2012年07月30日 16时36分22秒.886毫秒
时间戳:20120730163622887
关于日期Date的一些问题:
1、在数据库编程中,预处理操作PreparedSatement的基本操作方法中:setDate()方法要注意使用。定义如下:
void setDate(int parameterIndex, Date x)throws SQLException
此方法可以设置日期内容,但是使用时后面的Date类型变量是java.sql.Date,而不是java.util.Date,所以如果要将 util -> sql 类型的内容应该使用如下语句形式:
String birthday = "2012-09-06"; // 生日
java.util.Date temp = null; // 声明一个Date对象
// 通过SimpleDateFormat类将一个字符串变成 java.util.Date 类型;
temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
// 通过java.sql.Date 取出具体的日期数,并将其变为 java.sql.Date类型
java.sql.Date bir = new java.sql.Date(temp.getTime());
注意java.util.Date类型无法直接被PreparedStatement对象上使用,所以调用java.util.Date类的getTime()方法,将其内容变为java.sql.Date类型的数据。
2、使用Calendar类得到时间有一个问题,eg:现在的月份是9月份,正确的格式是09,但因为得到的方法返回类型是int类型,所以最终返回的是9,所以要得到正确的格式效果,则必须有 9 前面补一个0.