java 日期相关操作枚举
日期操作类:
1. Date,DateFormat, SimpleDateFormat,Calendar;
2. java.util.Date:最简单,系统提供;
———java.util.Date打印当前系统时间:
package com.mldn;
import java.util.Date;
public class DateTest
{
public static void main(String[] args)
{
System.out.println(new Date()); // 打印当前系统日期;
}
}
/*
administrator@xu-desktop:~$ java com.mldn.DateTest
Thu Mar 18 17:40:18 CST 2010
*/
使用Calendar类打印中国时间:
1.java.util.Calendar, 可以将时间精确到毫秒,
2
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable
- 是一个抽象类,实现了若干接口,其中有对Calendar的泛型接口;
4. 子类:java.util.GregorinCalendar类;
—–实例:
package com.mldn;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarTest
{
public static void main(String[] args)
{
Calendar calendar = new GregorianCalendar(); // 用子类对象实例化抽象类
System.out.println(calendar.get(Calendar.YEAR) + ” 年 “); // 输出年;
System.out.println((calendar.get(Calendar.MONTH)+1) + ” 月 ” ); // 输出月+1;
System.out.println(calendar.get(Calendar.DAY_OF_MONTH) + ” 日 “); // 输出日;
System.out.println(calendar.get(Calendar.HOUR_OF_DAY) + ” 时 “); // 输出时
System.out.println(calendar.get(Calendar.MINUTE) + ” 分 “); // 输出分
System.out.println(calendar.get(Calendar.SECOND) + ” 秒 “); // 输出秒
System.out.println(calendar.get(Calendar.MILLISECOND) + ” 毫秒 “); // 输出毫秒
}
}
/*
administrator@xu-desktop:~$ java com.mldn.CalendarTest
2010 年
3 月
18 日
18 时
9 分
36 秒
517 毫秒
*/
获取如下格式的时间:2009-03-12 13:36:09.456
package com.mldn;
import java.util.Calendar; // 抽象类
import java.util.GregorianCalendar; // Calendar的子类,非抽象
public class GetDateTime
{
public static void main(String[] args)
{
System.out.println(new DateTime().getDate()); // 格式:2010-03-20
System.out.println(new DateTime().getDateTime()); // 格式:2010-03-20 13:38:19.860
System.out.println(new DateTime().getDateComplete()); // 格式:2010年03月20日
System.out.println(new DateTime().getDateTimeComplete()); // 格式:2010年03月20日 13时47分43秒753毫秒
}
}
class DateTime
{
private Calendar calendar = new GregorianCalendar(); // 实例化Calendar对象
public String getDate()
{
StringBuffer str = new StringBuffer();
str.append(this.calendar.get(Calendar.YEAR)); // 年;
str.append(“-“);
str.append(this.addZero(this.calendar.get(Calendar.MONTH) + 1, 2)); // 月
str.append(“-“);
str.append(this.addZero(this.calendar.get(Calendar.DAY_OF_MONTH), 2)); // 日
return str.toString();
}
public String getDateTime()
{
StringBuffer str = new StringBuffer();
str.append(this.getDate());
str.append(” “).append(this.addZero(this.calendar.get(Calendar.HOUR_OF_DAY), 2)); // 时
str.append(“:”).append(this.addZero(this.calendar.get(Calendar.MINUTE), 2)); // 分
str.append(“:”).append(this.addZero(this.calendar.get(Calendar.SECOND), 2)); // 秒
str.append(“.”).append(this.addZero(this.calendar.get(Calendar.MILLISECOND), 3));
return str.toString();
}
public String getDateComplete()
{
StringBuffer str = new StringBuffer();
str.append(this.calendar.get(Calendar.YEAR)); // 年;
str.append(“年”);
str.append(this.addZero(this.calendar.get(Calendar.MONTH) + 1, 2)); // 月
str.append(“月”);
str.append(this.addZero(this.calendar.get(Calendar.DAY_OF_MONTH), 2)).append(“日”); // 日
return str.toString();
}
public String getDateTimeComplete()
{
StringBuffer str = new StringBuffer();
str.append(this.getDateComplete());
str.append(” “).append(this.addZero(this.calendar.get(Calendar.HOUR_OF_DAY), 2)); // 时,Calendar.HOUR:12h
str.append(“时”).append(this.addZero(this.calendar.get(Calendar.MINUTE), 2)); // 分
str.append(“分”).append(this.addZero(this.calendar.get(Calendar.SECOND), 2)); // 秒
str.append(“秒”).append(this.addZero(this.calendar.get(Calendar.MILLISECOND), 3)).append(“毫秒”);
return str.toString();
}
private String addZero(int temp, int len)
{
StringBuffer str = new StringBuffer();
str.append(temp); // 添加数字
if (str.length() < len)
{
str.insert(0, 0); // 数字不足,在起始位置插补0
}
return str.toString(); // 返回str字符串
}
}
/*
administrator@xu-desktop:~$ java com.mldn.GetDateTime
2010-03-20
2010-03-20 13:47:43.752
2010年03月20日
2010年03月20日 13时47分43秒753毫秒
*/
———时间日期格式化:
java.text.DateFormat,和MessageFormat一样是Format类的子类,可以按不同风格格式化系统时间;
java.text.SimpleDateFormat; // DateFormat抽象类的子类,非抽象类
java.util.Date本身表示的时间在格式上不理想,需要格式化;
DateFormat类中有方法:
public final String format(Date date);
可以把Date类型的时间格式化为String类型,表示日期风格;
DateFormat类是个抽象类,他的实例用其静态方法获取:
- public static final DateFormat getDateInstance();
// 获取默认日期风格的实例;
- public static final DateFormat getDateInstance(int style);
// 获取特定日期风格的实例
- public static final DateFormat getDateTimeInstance();
// 获取默认日期时间风格的实例
- public static final DateFormat getDateTimeInstance(int datestyle, int timestyle)
// 如上理解;
———– 按默认风格格式化本地系统时间:
package com.mldn;
import java.util.Date;
import java.text.DateFormat;
public class TimeFormat
{
public static void main(String[] args)
{
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateInstance(); // 取得默认风格的实例
DateFormat dateTimeFormat = DateFormat.getDateTimeInstance();
System.out.println(“本地系统时间:” + date); // 本地系统时间
System.out.println(“默认风格转换:” + dateFormat.format(date)); // 按默认风格格式化日期
System.out.println(“默认风格转换:” + dateTimeFormat.format(date)); // 按默认风格格式化日期时间
}
}
/*]
administrator@xu-desktop:~$ java com.mldn.TimeFormat
本地系统时间:Sat Mar 20 14:25:17 CST 2010
默认风格转换:2010-3-20
默认风格转换:2010-3-20 14:25:17
将Date类型的本地风格按默认格式转换!
*/
——获取特定风格的日期时间:
package com.mldn;
import java.util.Date;
import java.text.DateFormat; // 抽象类
public class TimeFormat
{
public static void main(String[] args)
{
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); // 获取特定风格实例
DateFormat dateTimeFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(“本地系统时间:” + date); // 本地系统时间
System.out.println(“特定风格转换:” + dateFormat.format(date)); // 特定风格格式化日期
System.out.println(“特定风格转换:” + dateTimeFormat.format(date)); // 特定风格格式化日期时间
}
}
/*]
administrator@xu-desktop:~$ java com.mldn.TimeFormat
本地系统时间:Sat Mar 20 14:47:02 CST 2010
特定风格转换:2010年3月20日 星期六 // 结果好像不太规范,3没有0
特定风格转换:2010年3月20日 星期六 下午02时47分02秒 CST
*/
———日期风格的转换:
DateFormat本身是抽象的,要借助其子类SimpleDateFormat进行风格的操作;
1.进行日期风格的转换;
2.取得指定格式的日期时间;
构造方法:
public SimpleDateFormat(String pattern); // 构造指定的风格,pattern表示风格模板;
提取日期方法:
public Date parse(String source) throws parseException // String –> Date
格式化:
public final String format(Date date); // 按风格格式化日期时间;
—————- 按自定义的格式转换日期时间:
package com.mldn;
import java.util.Date;
import java.text.SimpleDateFormat; // 子类
import java.text.ParseException; // 转换异常类
public class TimeFormat
{
public static void main(String[] args)
{
String timeStr = “2009-03-02 17:08:09.457”;
SimpleDateFormat oldStyle = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss.SSS”); // 定义旧风格
SimpleDateFormat newStyle = new SimpleDateFormat(“yyyy年MM月dd日hh时mm分ss秒SSS毫秒”); // 定义新风格
try // try块内的变量,在try块外无法访问!
{
Date date = oldStyle.parse(timeStr); // 按旧风格提取日期时间。。String –> Date
String str = newStyle.format(date); // 按自定义风格格式化Date对象
System.out.println(“自定义风格转换:” + str); // 打印自定义风格格式化的日期时间
}
catch (ParseException e)
{
e.printStackTrace();
}
}
}
/*]
administrator@xu-desktop:~$ java com.mldn.TimeFormat
自定义风格转换:2009年03月02日05时08分09秒457毫秒
风格模板的定义:是一个字符串, 年:y,月:M,日:d,时:h(12h)H(24h),分:m,秒:s,毫秒:S;
2009-03-20 03:39:32.457 — “yyyy-MM-dd hh:mm:ss.SSS”
*/
———接收用户输入的时间,并按风格输出:
package com.mldn;
import java.util.Date;
import java.text.SimpleDateFormat; // 子类
import java.text.ParseException; // 转换异常类
public class TimeFormat
{
public static void main(String[] args) // 空格可以作为main的参数的分隔符
{
try // try块内的变量,在try块外无法访问!
{
String timeStr = args[0] + ” ” + args[1]; // 接收参数,将接收用户输入,java.laArrayIndexOutOfBoundsException
// String timeStr = args[0]; // 要求:输入: “2009-03-30 12:22:32.555” ,别忘了引号!
SimpleDateFormat oldStyle = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss.SSS”); // 定义旧风格
SimpleDateFormat newStyle = new SimpleDateFormat(“yyyy年MM月dd日hh时mm分ss秒SSS毫秒”); // 定义新风格
Date date = oldStyle.parse(timeStr); // 按旧风格提取日期时间。。String –> Date java.text.ParseException
String str = newStyle.format(date); // 按自定义风格格式化Date对象
System.out.println(“原来的风格:” + date);
System.out.println(“自定义风格转换:” + str); // 打印自定义风格格式化的日期时间
}
catch (ArrayIndexOutOfBoundsException e)
{
e.printStackTrace();
System.out.println(“请输入时间参数!”);
}
catch (ParseException e)
{
e.printStackTrace();
System.out.println(“请输入按正确的风格输入时间!”);
}
}
}
/*
administrator@xu-desktop:~$ java com.mldn.TimeFormat
自定义风格转换:2009年03月02日05时08分09秒457毫秒
风格模板的定义:是一个字符串, 年:y,月:M,日:d,时:h(12h)H(24h),分:m,秒:s,毫秒:S;
2009-03-20 03:39:32.457 — “yyyy-MM-dd hh:mm:ss.SSS”
*/
———用SimpleDateFormat编写日期类:
/*
@version 2009-03-20 16:31
@author Xjinan
用SimpleDateFormat实现经典的日期类格式化操作!
*/
package com.mldn;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateTime
{
private SimpleDateFormat style= null;
public String getDate()
{
this.style = new SimpleDateFormat(“yyyy-MM-dd”); // 定义日期风格
String date = style.format(new Date()); // 按定义风格格式化当前系统时间
return date;
}
public String getDateTime()
{
this.style = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”); // 定义日期时间风格
String dateTime = style.format(new Date()); // 按定义风格格式化当前系统时间
return dateTime;
}
public String getDateComplete()
{
this.style = new SimpleDateFormat(“yyyy年MM月dd日”); // 定义日期风格
String date = style.format(new Date()); // 按定义风格格式化当前系统时间
return date;
}
public String getDateTimeComplete()
{
this.style = new SimpleDateFormat(“yyyy年MM月dd日HH时mm分ss秒SSS毫秒”); // 定义日期时间风格
String dateTime = style.format(new Date()); // 按定义风格格式化当前系统时间
return dateTime;
}
public String getDateTimeStamp()
{
this.style = new SimpleDateFormat(“yyyyMMddHHmmssSSS”); // 定义日期时间戳风格
String dateTimeStamp = style.format(new Date()); // 按定义风格格式化当前系统时间戳
return dateTimeStamp;
}
public static void main(String[] args)
{
System.out.println(new DateTime().getDate());
System.out.println(new DateTime().getDateTime());
System.out.println(new DateTime().getDateComplete());
System.out.println(new DateTime().getDateTimeComplete());
System.out.println(new DateTime().getDateTimeStamp());
}
}
/*
administrator@xu-desktop:~$ javac -d . work/DateTime.java
administrator@xu-desktop:~$ java com.mldn.DateTime
2010-03-20
2010-03-20 16:30:26.650
2010年03月20日
2010年03月20日16时30分26秒652毫秒
20100320163026653
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《java 日期相关操作枚举》
本文地址:http://www.xiupu.net/archives-183.html
关注公众号:
微信赞赏
支付宝赞赏