Java学习笔记(28)-Date和DateFormat

Date类

java中用于描述日期的类。

Date内部维护着一个long值,这个值表示的是1970-01-01 00:00:00到Date所表示的日期之间的毫秒值。

Calendar类

日历类

Calendar不存在千年虫问题。并且可以非常方便的计算日期。

SimpleDateFormat类

该类的作用是可以很方便的在字符串和日期类之间相相互转换。

我们可以将一个描述日期的字符串:2012-01-01转换为一个Date对象。

同样,我们也可以将一个描述日期的Date对象转换为2012-01-01这样格式的字符串来表示


package day02;

import java.util.Date;

/**
 * java中的日期类 Date
 * 
 * @author Administrator
 *
 */
public class MyFirstDate {
	public static void main(String[] args) {
		// 创建一个Date实例,默认的构造方法创建的日期代表当前系统时间
		Date date = new Date();// ctrl+shift+o
		/*
		 * 输出date对象 GMT:格林威治时间 世界上计时流行的标准 中国所属时区为+8区,所以要对时间上的小时+8.
		 */
		System.out.println(date);
		/*
		 * 查看date内部的毫秒值
		 */
		long time = date.getTime();
		System.out.println(time);
		/*
		 * 可以设置一个时间让Date表示该日期
		 * 一天后的当前时间
		 */
		date.setTime(time+1000*60*60*24);
		System.out.println(date);
		
		int year = date.getYear();
	}
}

package day02;

import java.util.Calendar;
import java.util.Date;

/**
 * 日历类
 * @author Administrator
 *
 */
public class MyCalendar {
	public static void main(String[] args) {
		/*
		 * 通过Calendar的静态方法获取一个实例
		 * 该方法会自行决定时区,帮我们创建Calendar实例
		 * 该方法会根据当前系统所在地区来决定时区
		 * 
		 * 这里要注意,实际上根据不同的地区,Calendar有若干个
		 * 子类实现。而Calendar本身是抽象类,不能被实例化!
		 * 我们不需要关心创建的实例具体为哪个子类,我们只需要根据
		 * Calendar规定的方法来使用就可以了。
		 */
		Calendar calendar = Calendar.getInstance();
		//构造出来表示当前时间的日历类
		/*
		 * 日历类所解决的根本问题是简化日期的计算
		 * 要想表示某个日期还应使用Date来描述
		 * Calendar是可以将其描述的时间转化为Date的
		 * 我们只需要调用其getTime()方法就可以获取描述的日期的Date对象了 
		 */
		Date now = calendar.getTime();//获取日历所描述的日期
		System.out.println(now);
		
		/*
		 * 通过日历类计算时间
		 * 为日历类设置时间
		 * 日历类设置时间使用通用方法set
		 * set(int field,int value)
		 * field为时间分量:Calendar提供了相应的常量值
		 * value:对应的值
		 */
		calendar.set(Calendar.YEAR, 1995);
		calendar.set(Calendar.MONTH, 1);
		/*
		 * 设置日历表示15号
		 * DAY_OF_MONTH  月里边的天--号
		 * DAY_OF_WEEK  	星期里的天---星期几
		 * DAY_OF_YEAR		年里的天
		 */
		calendar.set(Calendar.DAY_OF_YEAR, 132);
		calendar.set(Calendar.DAY_OF_MONTH, 15);
		System.out.println(calendar.getTime());
		
		/*
		 * 想得知22天以后是哪天
		 */
		calendar.add(Calendar.DAY_OF_YEAR, 22);
		System.out.println(calendar.getTime());
		/*
		 * 想得知5天前是哪天?
		 */
		calendar.add(Calendar.DAY_OF_YEAR, -5);
		System.out.println(calendar.getTime());
		/*
		 * 得知1个月后是哪天?
		 */
		calendar.add(Calendar.MONTH, 1);
		System.out.println(calendar.getTime());
		/*
		 * 想获取当前日历表示的日期中的某个时间单位
		 * 可以使用get方法
		 */
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		//month要处理
		System.out.println(year+"年"+(month+1)+"月"+day+"日");
	}
}


package day02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * 日期转换类SimpleDateFormat
 * 这里我们在字符串与日期类间相互转换是需要一些约束的
 * "2012-02-02"这个字符串如何转换为Date对象?
 * SimpleDateFormat用来描述日期的格式
 * yyyy-MM-dd 2012-12-15
 * yy-MM-dd 12-12-30
 * yyyy-MM-dd hh:mm:ss	2012-12-15 03:20:53
 */
public class MyDateFormat {
	public static void main(String[] args) throws ParseException {
		/*
		 * 创建一个SimpleDateFormat并且告知它要读取的字符串的格式
		 */
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//创建一个日期格式的字符串
		String dateFormat = "2013-05-14";
		//将一个字符串转换为相应的Date对象
		Date date = sdf.parse(dateFormat);
		//输出这个Date对象
		System.out.println(date);
		/*
		 * 反向操作,我们也可以将一个Date对象转换为它所描述的日期的字符串。同样,转换出来
		 * 的字符串格式是SimpleDateFormat创建的时候设置的格式
		 */
		Date now = new Date();//创建用于描述当前系统时间的Date
		String nowStr = sdf.format(now );
		System.out.println(nowStr);//2013-05-14
		/*
		 * 将当前系统时间转换为2012/05/14 17:05:22的效果
		 */
		SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
		nowStr = format2.format(now);
		System.out.println(nowStr);
	}
}


package day02;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

/*
 * DateFormat
 * 这个类是SimpleDateFormat的父类
 */
public class TestDateFormat {
	public static void main(String[] args) {
		//创建描述当前系统时间的Date对象
		Date now = new Date();
		/*
		 * 创建用于将Date对象转换为日期格式的字符串的DateFormat
		 * 创建DateFormat对象的实例使用静态方法
		 * getDateInstance(style,aLocale);
		 * style为输出日期格式的样式:DateFormat有对应的常量
		 * aLocale为输出的地区信息。影响字符串的语言和表现形式
		 * 例如:老美喜欢描述日期为:月日年
		 * 		我们喜欢描述日期为:年月日
		 */
		//创建用于将Date对象转换为日期格式的字符串的DateFormat
		DateFormat format = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
		System.out.println(format.format(now));
	}
}

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值