JAVA学习第四十六课 — 其他对象API(二)Date类 & Calendar类(重点掌握)

Date类(重点)

开发时,会时常遇见时间显示的情况,所以必须熟练Date的应用

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.util.*;


public class Main 
{
	public static void main(String[] args){
		
		long l = System.currentTimeMillis();//1414079892981
		System.out.println(l);
		
		Date  date = new Date();//当前时间
		System.out.println(date);
		
		Date date2 = new Date(1414079892981l);//将毫秒值封装成对象
		System.out.println(date2);
	}
}</strong></span>


日期对象和毫秒值之间的转换问题。

毫秒值->日期对象 :1.new Date(TimeMillis);2.setTime()

故:可以通过Date对象的方法对某年、月、日进行操作

日期对象->毫秒值 :getTime();

故:可以通过具体的数值进行运算,两个日期对象无法减,变成毫秒就可以减,得到相隔几天


Boolean after(Date when)  测试此日期是否在指定日期之后。

Boolean before(Date when) 测试此日期是否在指定日期之前。

Object clone() 返回此对象的副本。

int compareTo(Date anotherDate) 比较两个日期的顺序。

Boolean equals(Object obj) 比较两个日期的相等性。


把日期对象转成字符串。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main 
{
	public static void main(String[] args){
		MethodDemo();
	}
	public static void MethodDemo(){//对日期对象格式化 转换成日期格式的字符串
		
		Date date = new Date();
		//获取日期对象,具备默认的风格
		DateFormat dateFormat = DateFormat.getDateInstance();//获取日期工厂
		String str_Date = dateFormat.format(date);
		System.out.println(str_Date);//2014-10-24
		
		DateFormat dateFormat2 = DateFormat.getDateTimeInstance();//获取日期加时间工厂
		String str_Date2 = dateFormat2.format(date);
		System.out.println(str_Date2);//2014-10-24 0:30:22
		
		//指定格式 FULL:2014年10月24日 星期五   LONG:2014年10月24日  SHORT:14-10-24
		DateFormat dateFormat3 = DateFormat.getDateInstance(dateFormat.FULL);//获取日期工厂
		String str_Date3 = dateFormat3.format(date);
		System.out.println(str_Date3);
		
		//2014年10月24日 星期五 上午12时39分27秒
		DateFormat dateFormat4 = DateFormat.getDateTimeInstance(dateFormat.FULL,dateFormat.LONG);
		String str_Date4 = dateFormat4.format(date);
		 System.out.println(str_Date4);
		 
		 //自定义风格 使用的是DateFormat类中的format方法,其中SimpleDateFormat是DateFormat的子类
		 DateFormat dateFormat5 = new SimpleDateFormat("yyyy#MM#dd");
		 String str_Date5 = dateFormat5.format(date);
		 System.out.println(str_Date5);
	}
}</strong></span>

字符串转日期对象

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main 
{
	public static void main(String[] args)throws ParseException{
		MethodDemo();
	}
	//字符串转Date对象 使用的是parse方法
	public static void MethodDemo() throws ParseException{
		//默认风格
		String str_date = "2014-10-24";
		DateFormat dateFormat = DateFormat.getDateInstance();
		Date date = dateFormat.parse(str_date);//抛异常
		System.out.println(date);
		
		//自定义风格
		String str_date2 = "2014年10月24日";
		DateFormat dateFormat2 = DateFormat.getDateInstance(DateFormat.LONG);
		Date date2 = dateFormat2.parse(str_date2);//抛异常
		System.out.println(date2);
		
		String str_date3 = "2014年--10月--24日";
		DateFormat dateFormat3 = DateFormat.getDateInstance(DateFormat.LONG);
		dateFormat3 = new SimpleDateFormat("yyyy年--MM月--dd日");
		Date date3 = dateFormat3.parse(str_date3);//抛异常
		System.out.println(date3);
	}
}</strong></span>


Date类练习

2014-10-24 到 2012-12-25日有多少天

1.将字符串转成Date对象

2.将Date对象转成毫秒

3.相减得天数

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main 
{
	public static void main(String[] args)throws ParseException{
		MethodDemo();
	}
	
	public static void MethodDemo() throws ParseException{
		String str1 = "2014-10-24";
		String str2 = "2012-12-25";
		
		Date date1 = new Date();
		Date date2 = new Date();
		
		DateFormat dateFormat1 = DateFormat.getDateInstance();
		dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
		date1 = dateFormat1.parse(str1);
		date2 = dateFormat1.parse(str2);
		
		long time1 = date1.getTime();
		long time2 = date2.getTime();
		long time = Math.abs(time1 - time2);
		
		int day = Getday(time);
		System.out.println(day+"天");
	}
	public static int Getday(long time){
		return (int)(time/1000/60/60/24);
	}
}

Calendar类

public class Main 
{
	public static void main(String[] args){
		MethodDemo();
	}
	
	public static void MethodDemo() {
	
		Calendar ca = Calendar.getInstance();
		int year = ca.get(Calendar.YEAR);
		int mon = ca.get(Calendar.MONTH)+1;//注意要+1,0代表一月
		int day = ca.get(Calendar.DAY_OF_MONTH);
		int week = ca.get(Calendar.DAY_OF_WEEK);//注意国外和我们不一样
		//2014-10-24-星期五
		System.out.println(year+"-"+mon+"-"+day+"-"+GetWeek(week));
	}

	private static String GetWeek(int i) {
		// TODO Auto-generated method stub
		String[] week = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
		return week[i];
	}
}

练习:

import java.util.Calendar;


public class Main 
{
	public static void main(String[] args){
		
	
		int year = 2014;
		showyear(year);//判断某一年的二月有几天
		//showday();
	}

	private static void showyear(int year) {
		Calendar ca = Calendar.getInstance();
		
		ca.set(year,2,1);//设置某年3月1日时间
		ca.add(Calendar.DAY_OF_MONTH, -1);//3月的前一天
		MethodDemo(ca);
	}

	private static void showday() {
		
		Calendar ca = Calendar.getInstance();
		
		ca.set(2015,10,25);//设置2015.11.25时间
		ca.add(Calendar.DAY_OF_MONTH, -1);//时间偏移-》2013
		MethodDemo(ca);//2015-10-24-星期二
		
		ca.add(Calendar.DAY_OF_MONTH, 10);//超过会自动进一个月
		MethodDemo(ca);
	}
	
	public static void MethodDemo(Calendar ca) {
	
		
		int year = ca.get(Calendar.YEAR);
		int mon = ca.get(Calendar.MONTH)+1;
		int day = ca.get(Calendar.DAY_OF_MONTH);
		int week = ca.get(Calendar.DAY_OF_WEEK);
		int hour = ca.get(Calendar.HOUR);
		int minute = ca.get(Calendar.MINUTE);
		int second = ca.get(Calendar.SECOND);
		System.out.print(year+"-"+mon+"-"+day+"-"+GetWeek(week)+"-"+hour+":");
		if(minute>9){
			System.out.println(minute+":"+second);
		}
		else {
			System.out.println("0"+minute+":"+second);
		}
	}

	private static String GetWeek(int i) {
		
		String[] week = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
		return week[i];
	}
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值