java日期处理

Date:

 

Date类位于java.util包下,由于存在千年虫问题,现在Date的大部分方法都已经不再使用。目前使用的主要有long getTime()方法获取给定Date时间对应的毫秒值以及Date getTime(long sec)方法根据给定时间设置为Date对象或者直接使用构造器new Date(long sec)

public class DateDemo {
	public static void main(String[] args) {
		/**
		 * 获取当前时间
		 */
		Date date = new Date();
		System.out.println(date);
		/**
		 * 获取当前时间的毫秒值
		 */
		long sec = date.getTime();
		System.out.println(sec);
		/**
		 * 通过一个毫秒值让Date去描述这个对象
		 */
		date.setTime(sec);
		System.out.println(date);
	}
}

 SimpleDateFormat

SimpleDateFormat类位于java.text包下,是java.txt.DateFormat的子

java.lang.Object
  --java.text.Format
      --java.text.DateFormat
          --java.text.SimpleDateFormat

字母

日期或时间元素

表示

示例

G

Era 标志符

Text

AD

y

Year

1996; 96

M

年中的月份

Month

July; Jul; 07

w

年中的周数

Number

27

W

月份中的周数

Number

2

D

年中的天数

Number

189

d

月份中的天数

Number

10

F

月份中的星期

Number

2

E

星期中的天数

Text

Tuesday; Tue

a

Am/pm 标记

Text

PM

H

一天中的小时数(0-23

Number

0

k

一天中的小时数(1-24

Number

24

K

am/pm 中的小时数(0-11

Number

0

h

am/pm 中的小时数(1-12

Number

12

m

小时中的分钟数

Number

30

s

分钟中的秒数

Number

55

S

毫秒数

Number

978

z

时区

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

时区

RFC 822 time zone

-0800

 

经常使用SimpleDateFormat类下的formatDate date)方法对已知的Date对象进行格式化。

/**
 * 将Date对象格式化
 * @author Pursuit.
 * @version 2013-11-22  上午8:42:18
 */
public class SimpleDateFormatFormat {
	public static void main(String[] args) {
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 kk:mm:ss E");
		//对应格式 2013年11月22日 08:47:14 星期五
		String str = sdf.format(now);
		System.out.println(str);
	}
}

 经常使用SimpleDateFormat类下的Date parseString str)方法对已知的String对象进行转换。

/**
 * 使用SimpleDateFormat
 * 进行字符串按照指定格式解析为Date对象
 * @author Administrator
 *
 */
public class SimpleDateFormatDemo2 {
	public static void main(String[] args) throws ParseException {
		//定义一个日期的字符串
		String str = "2013/12/30 15:22:45";
		
		/**
		 *   2013/12/30 15:22:45"
		 *   yyyy/MM/dd HH:mm:ss
		 */
		SimpleDateFormat sdf = 
			new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		/**
		 * Date parse(String str)
		 * 将给定的字符串按照给定的格式解析成Date对象
		 */
		Date date = sdf.parse(str);
		
		System.out.println(date);
	}
}

 

Calender:

Calendar位于java.util包下,目前使用较多的日期类。

public class CalendarDemo {
	public static void main(String[] args) {		
		/**
		 * 根据当前系统地区创建Calendar实例
		 * 默认创建出来的Calendar描述的是当前系统时间
		 * java.util.Calendar
		 */
		Calendar calendar = Calendar.getInstance();	
//		System.out.println(calendar);
		/**
		 * Date getTime()
		 * 以Date形式描述当前Calendar所描述的时间
		 */
		Date date = calendar.getTime();		
/**
		 * void setTime(Date date)
		 * 让当前Calendar描述给定的Date对象所描述的时间
		 */		calendar.setTime(new Date());		
		System.out.println(date);		
	}
}

 

设置和获取时间

/**
 * 设置和获取时间
 * @author Administrator
 *
 */
public class CalendarDemo2 {
	public static void main(String[] args) {
		//创建当前系统时间的日历类
		Calendar calendar = Calendar.getInstance();
		//输出时间
		System.out.println(calendar.getTime());
		
		/**
		 * 将当前时间中的年设置为1995
		 */
		calendar.set(Calendar.YEAR, 1995);
		//输出时间
		System.out.println(calendar.getTime());
		
		/**
		 * 将当前时间中的月设置为5月
		 * 月在Calendar中有对应的常量
		 * 若写数字,0表示1月,以此类推
		 */
		calendar.set(Calendar.MONTH, 4);
		//输出时间
		System.out.println(calendar.getTime());
		
		/**
		 * 将当前时间中的日设置为5号
		 * Calendar.DATE          表示的是月中的某一天
		 * Calendar.DAY_OF_MONTH  和DATE常量一摸一样
		 * 
		 * Calendar.DAY_OF_WEEK   表示星期中的某一天
		 * 
		 * Calendar.DAY_OF_YEAR   表示年中的某一天
		 * 
		 */
		calendar.set(Calendar.DATE, 5);
		//输出时间
		System.out.println(calendar.getTime());
		
		/**
		 * Calendar.HOUR          表示12小时制的小时 0-11
		 * Calendar.HOUR_OF_DAY   表示24小时制的小时
		 * 
		 */
		calendar.set(Calendar.HOUR, 4);
		//输出时间
		System.out.println(calendar.getTime());
		
		
		/**
		 * 获取当前Calendar中的某一个时间单位的值
		 */
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		
		System.out.println("现在是" + year + "年");
		System.out.println(month + 1 + "月");
		System.out.println(day + "日");
		/**
		 * 对于星期而言,1表示星期日,2表示星期一,以此类推
		 */
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(
				"星期" + 
				( dayOfWeek==1 ? 7 : dayOfWeek-1 )				
		);
		/**
		 * 查看1995年的5月5号是一年中的第几天
		 */
		int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("是一年中的第"+dayOfYear+"天");
		
	}
}

 设置时间值溢出时系统会自动增加至下一月、下一年

import java.util.Calendar;
/**
 * Calendar设置时间的溢出问题
 * @author Administrator
 *
 */
public class CalendarDemo3 {
	public static void main(String[] args) {
		
		Calendar calendar = Calendar.getInstance();
		/**
		 * 当设置的值超过了该值允许的最大值时,会将相应的时间
		 * 单位进行进位,这里就会对月进行进位
		 */
		calendar.set(Calendar.DAY_OF_MONTH, 32);
		//Mon Dec 02 08:55:03 CST 2013
		System.out.println(calendar.getTime());
	}
}

 

总结

StringDate以及DateString使用的是SimpleDateFormat

 

DateCalendar以及CalendarDate使用的是Calendar下的setTimeDate date)以及Clendar下的Date getTime()方法

 

 

你可能感兴趣的:(java)