具体类(和抽象类相对)java.util.Date
抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat
抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar
具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类。
Date类:
Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数。
Date类常用的两个构造函数:
Date()无参数的构造函数创建的对象可以获取本地当前时间。
Date(long time)使用一个从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数创建一个Date对象
Date示例:
Date date = new Date();
System.out.println(date.getTime()); //1228061164796
System.out.println(date.toString()); //Mon Dec 01 00:06:04 CST 2008
日期数据的定制格式:(DateFormat类、SimpleDateFormat类)
为了定制日期数据的输出格式,我们可以使用DateFormat的子类SimpleDateFormat。SimpleDateFormat有个常用构造方法:
public SimpleDateFormat(String pattern) //pattern指定输出格式
pattern中可以有如下格式符:
y,yy:用2位数字表示的"年"替换。
yyyy:用4位数字表示的"年"替换。
M,MM:用2位数字表示的"月"替换。
MMM:用汉字表示的"月"替换。
d,dd:用2位数字表示的"日"替换。
H,HH:用2位数字表示的"时"替换。
m,mm:用2位数字表示的"分"替换。
s,ss:用2位数字表示的"秒"替换。
E:用"星期"替换
pattern中的普通ASCII字符,必须用单引号“'”字符括起来,如:
pattern="'time':yyyy-MM-dd";
用SimpleDateFormat对象调用如下方法可以定制某时间输出格式:
public String format(Date date)
实例:
SimpleDateFormat sdf = new SimpleDateFormat(" 'time':yyyy-MM-dd");
System.out.println(sdf.format(date)); // time:2008-12-01
假如我们由一个文本字符串包含一个格式化了的日期对象,现在从这个字符串中解析日期数据创建一个日期对象。
使用SimpleDateFormat对象调用如下函数创建一个Date对象:
Date java.text.DateFormat.parse(String source)
实例:
String str="2008-12-1";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try{
Date date=sdf.parse(str);
System.out.println(date); //Mon Dec 01 00:00:00 CST 2008
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
使用标准的日期格式化过程:
常用的两个获取日期/时间格式器的方法:
public static final DateFormat getDateTimeInstance() //具有默认语言环境的默认格式化风格。
public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle) //具有默认语言环境的给定日期和时间格式化风格。
实例:
Date date = new Date();
DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(shortDateFormat.format(date)); //08-12-1 下午1:28
System.out.println(mediumDateFormat.format(date)); //2008-12-1 13:28:31
System.out.println(longDateFormat.format(date)); //2008年12月1日 下午01时28分31秒
System.out.println(fullDateFormat.format(date)); //2008年12月1日 星期一 下午01时28分31秒 CST
Calendar类:
使用Date类可以创建日期/时间对象,使用DateFormat类,SimpleDateFormat类可以对Date对象进行格式化。
使用Calendar类可以设置和获取日期/时间数据的特定部分。
Calendar类是抽象类不能实例化对象,但是可以使用Calendar类的static方法getInstance(),可以初始化一个日历对象。如:
Calendar calendar = Calendar.getInstance();
然后可以使用该calendar对象可以调用方法,如:(当year取负数时表示公元前)
public final void set(int year, int month, int date)
public final void set(int year, int month, int date, int hourOfDay, int minute)
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
Calendar类对象调用如下方法可以获取有关年份,月份,小时,星期等信息,参数field的有效值由Calendar的静态常量指定
public int get(int field)
实例:
calendar.get(Calendar.MONTH); //返回一个整数,如果该整数是0表示一月,11表示12月
Calendar对象调用如下方法可以把时间表示为毫秒:
public long getTimeInMillis()
Calendar使用实例:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
String 年 = String.valueOf(calendar.get(YEAR)),
月 = String.valueOf(calendar.get(MONTH)+1),
日 = String.valueOf(calendar.get(DAY_OF_MONTH)),
星期 = String.valueOf(calendar.get(DAY_OF_WEEK)-1);
int hour = calendar.get(HOUR_OF_DAY),
minute = calendar.get(MINUTE),
second = calendar.get(SECOND);
System.out.println("现在的时间是:");
System.out.println(年+"年"+月+"月"+日+"日"+"星期"+星期);
System.out.println(hour+"时"+minute+"分"+second+"秒");
calendar.set(2004,7,8); //将日历翻到2004年8月8日,注意7表示八月
long time2004 = calendar.getTimeInMillis();
calendar.set(2008,7,8); //将日历翻到2008年8月8日
long time2008 = calendar.getTimeInMillis();
long 相隔天数 = (time2008-time2004)/(1000*60*60*24);
System.out.println("2008年8月8日和2004年8月8日相隔"+相隔天数+"天");
输出结果:
现在的时间是:
2008年12月1日星期1
14时41分45秒
2008年8月8日和2004年8月8日相隔1461天
详细解决方案
Java中的日期/时间类,Date、DateFormat、Calendar类
热度:31 发布时间:2024-01-14 00:09:07.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件