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];
	}
}

时间: 2024-10-26 18:23:34

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

JAVA学习第四十五课 — 其他对象API(一)

一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量). long time = 1414069291407l;//long型 后面加l System.out.println(time); 2. static void exit(int status)终止当前正在运行的 Java 虚拟机. static void gc()运行垃圾回收器

JAVA学习第四十五课 — 其它对象API(一)System、Runtime、Math类

一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位測量). long time = 1414069291407l;//long型 后面加l System.out.println(time); 2. static void exit(int status)终止当前正在执行的 Java 虚拟机. static void gc()执行垃圾回收器

JAVA学习第四十八课 — IO流(二):文件的复制 &amp; 缓冲区1

一.复制文本文件 将G盘的文本文件复制到D盘上 也就是 读取G盘中文本文件的数据,写入D盘中->连读带写 而剪切呢,就是连读带写后,删除原盘的文件 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public clas

JAVA学习第三十六课(常用对象API)- 集合框架(四)— Set集合:HashSet集合演示

随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里很多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发常用 HashSet集合 .TreeSet集合 Set集合的元素是不重复且无序 一.HashSet集合 API文档解释:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null 元素. 此类为基本操作提供了稳定性能,注意,此实现不是同步的. 由上可

JAVA学习第五十六课 — IO流(十)对象的序列化和反序列化 &amp; RandomAccessFile

操作对象 ObjectInputStream.ObjectOutputStream 被操作的对象需要实现Serializable(标记接口) ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream 读取(重构)对象.通过在流中使用文件可以实现对象的持久存储.如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的

JAVA学习第四十九课 — IO流(三):缓冲区2 &amp; 装饰设计模式

一.模拟BufferedReader 自定义MyBuffereaReader 对于缓冲区而言,里面其实就是封装一个数组,对外提供方法对数组的操作,这些方法最终操作的都是数组的角标 原理:从源中取出数据存入缓冲区,再从缓冲区不断的取出数据,取完后,继续从源中继续取数据,进缓冲区,直至源中的数据取完,用-1做为结束标记 import java.io.*; class MyBufferedReader { private FileReader fr; //定义数组作为缓冲区 private char[

JAVA学习笔记(四十六)- 内部类详解

成员内部类 /* * 内部类 * 定义在另一个类中的类,称为内部类Inner Class * 包含内部类的类,称为外部类Outer Class * * 应用场合:在窗体程序中进行事件处理 * * 分类: * 成员内部类 * 局部内部类 * 静态内部类 * 匿名内部类 * * 成员内部类 * 1.在外部类中访问内部类,可以访问内部类中的所有成员,包含private修饰的 * 2.在外部类外访问内部类,不能访问内部类中的private修饰的成员 * 3.在内部类中访问外部类,直接访问,如果内部类和外

“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四十六章:判断任意线程是否已持有写锁 下一章 "全栈2019"Java多线程第四十七章:判断锁是否为公平锁isFair() 学习小组 加入同步学习小组,共同交流与进步. 方式一:加入编程圈子. 方式二:关注头条号Gorhaf,私信"Java学习小组". 方式三:关

NeHe OpenGL教程 第四十六课:全屏反走样

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十六课:全屏反走样 全屏反走样 当今显卡的强大功能,你几乎什么都不用做,只需要在创建窗口的时候该一个数据.看看吧,驱动程序为你做完了一切. 在图形的绘制中,直线的走样是非常影响美观的,我们可以使用反走样解决这个问题.在众多的解决