目录

  • Java开发入门
    • ● Java 概述
    • ● JDK的使用
    • ● 系统环境变量
    • ● 第一个Java程序
    • ● Java的运行机制
    • ● 教学设计
    • ● 课程讲义
    • ● 案例学习
    • ● 课后题答案
  • Java 编程基础
    • ● Java的基本语法
      • ● Java代码基本格式
      • ● Java中的注释
      • ● Java中的关键字
      • ● Java中的标识符
    • ● Java中的变量与常量
      • ● 变量的定义
      • ● 变量的数据类型
        • ● 案例导学
      • ● 变量的类型转换
        • ● 案例导学-自动类型转换
        • ● 案例导学-强制类型转换
      • ● 变量的作用域
        • ● 案例导学-作用域
      • ● Java中的常量
    • ● Java中的运算符
      • ● 案例导学-算术运算符
      • ● 案例导学-赋值运算符
      • ● 案例导学-比较运算符
      • ● 案例导学-逻辑运算符
      • ● 案例导学-位运算符
      • ● 案例导学-运算符的优先级
    • ● 选择结构语句
      • ● 案例导学-if条件语句
      • ● 案例导学-switch条件语句
    • ● 循环结构语句
      • ● 案例导学-while循环语句
      • ● 案例导学-for循环语句
      • ● 案例导学-循环嵌套
      • ● 案例导学-break语句
      • ● 案例导学-continue语句
    • ● 数组
      • ● 案例导学-一维数组的定义
      • ● 案例导学-数组最值
      • ● 案例导学-数组排序
    • ● 教学设计
    • ● 课程讲义
    • ● 课后题答案
  • 面向对象(上)
    • ● 面向对象概述
    • ● Java中的类与对象
      • ● 案例导学-类与对象
    • ● 类的封装
    • ● 案例导学-类的封装
    • ● 方法的重载和递归
    • ● 构造方法
      • ● 案例导学-构造方法与重载
    • ● this关键字
      • ● 案例导学-this
    • ● static关键字
      • ● 案例导学-静态变量
      • ● 案例导学-静态方法
      • ● 案例导学-静态代码块
    • ● 教学设计
    • ● 课程讲义
    • ● 章节测试
    • ● 课后题答案
  • 面向对象(下)
    • ● 类的继承
      • ● 案例导学-类的继承
      • ● 案例导学-方法的重写
      • ● 案例导学-super访问父类成员变量
      • ● 案例导学-super访问父类成员方法
      • ● 案例导学-super访问父类构造方法
    • ● final关键字
    • ● 抽象类和接口
    • ● 多态
    • ● 内部类
    • ● JDK8的Lambda表达式
    • ● 异常
    • ● 垃圾回收
    • ● 教学设计
    • ● 课程讲义
    • ● 章节测试
    • ● 课后习题答案
  • Java中的常用类
    • ● String类和StringBuffer类
    • ● System类与Runtime类
    • ● Math类与Random类
    • ● 包装类
    • ● 日期与时间类
    • ● 格式化类
    • ● 课后题答案
    • ● 课程讲义
  • 集合
    • ● 集和概述
    • ● Collection接口
    • ● List接口
      • ● List接口简介
      • ● ArrayList集合
      • ● LinkList集合
    • ● Collection集合遍历
    • ● Set接口
    • ● Map接口
    • ● 泛型
    • ● 常用工具类
      • ● Collections工具类
      • ● Arrays工具类
    • ● 课后题参考答案
    • ● 课程讲义
  • IO流
    • ● I/O流概述
    • ● 字节流
    • ● 字符流
    • ● File类
    • ● RandomAccessFile
    • ● 对象序列化
    • ● NIO
    • ● NIO.2
    • ● 课后题答案
    • ● 课程讲义
    • ● 章节测试
  • GUI(图形用户接口)
    • ● Swing概述
    • ● Swing顶级容器
    • ● 布局管理器
    • ● 事件处理
    • ● Swing常用组件
    • ● Swing组件的整合使用
    • ● JavaFX图形用户界面工具
    • ● 课程讲义
  • JDBC
    • ● 什么是JDBC
    • ● JDBC常用API
    • ● JDBC编程
    • ● 案例-使用JDBC实现QQ登录
    • ● 课程讲义
  • 多线程
    • ● 线程概述
    • ● 线程的创建
    • ● 线程的生命周期及状态转换
    • ● 线程的调度
    • ● 多线程同步
    • ● 多线程通信
    • ● 教学设计
    • ● 课后题参考答案
    • ● 课程讲义
  • 网络编程
    • ● 网络通信协议
    • ● UDP通信
    • ● TCP通信
    • ● 课程讲义
  • Eclipse开发工具
    • ● Eclipse概述
    • ● Eclipse的安装与启动
    • ● Eclipse进行程序开发
    • ● Eclipse程序调试
    • ● 使用Eclipse导出、导入jar文件
  • ACM大赛题库
    • ● 2027
    • ● 2028
    • ● 2024-2026
    • ● 2012-2023
    • ● 2018-2020
    • ● 2015-2017
    • ● 2012-2014
    • ● 2009-2011
    • ● 2003-2005
    • ● 2000-2002
  • PBL学生风采展示
    • ● 实验一
    • ● 实验二
    • ● 实验三
    • ● 实验四
日期与时间类


一、Date类

类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。

一、Date类

类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。

Date类中很多方法已经过时,使用Calendar来替代。

常用方法有

long getTime()

void setTime(long time)

public class T01Date {

public static void main(String[] args) {

//getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响

//date值受setTime()的影响

Date date=new Date();

long current=date.getTime();

System.out.println(current);//1472002479966

System.out.println(date);//Wed Aug 24 09:34:39 CST 2016

long time=current+1000*60*60*24;//时间设置为明日此时

date.setTime(time);

System.out.println(date.getTime());//1472002479966

System.out.println(current);//1472002479966

System.out.println(date);// Thu Aug 25 09:34:39 CST 2016

}

}

二、SimpleDateFormat

SimpleDateFormat根据特定的日期格式在Date和字符串之间转换

常用方法

String format(Date date):将日期按照指定格式转换成字符串

Date parse(String str):将字符串按照指定格式转换成Date

可以用来指定格式的字符

public class T02SimpleDateFormat {

public static void main(String[] args) throws ParseException {

Date now =new Date();

//2016-08-12 09:55:23

//yyyy-MM-dd hh:ss:mm

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh时ss分mm秒");

String str = sdf.format(now);

System.out.println(str);

//a 居然能区分上下午汉字

String strDate="2012年12月20日下午12点20分30秒";

SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒");

Date date=sdf2.parse(strDate);

System.out.println(date);

}

}

三、Calendar
java.util.Calendar是抽象类,主要用来对时间分量进行计算。

常用方法

(1)Date和Calendar之间的转换

//默认创建出来的Calendar的实现类表示当前系统时间

Calendar c=Calendar.getInstance();

//将Calendar转换为Date

Date date=c.getTime();

//Date->Calendar

/*

* void setTime(Date date)

* 该方法可以使当前Calendar表示给定的

* Date所表示的时间

* */

c.setTime(date);

}

}

(2)getInstance()方法

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()用来获取Calendar类型的实例

(3)get(int field)方法获取时间分量

import java.util.Calendar;

public class T05Calendar2 {

public static void main(String[] args) {

Calendar c=Calendar.getInstance();

//获取年

int year=c.get(Calendar.YEAR);

System.out.println("year:"+year);//2016

//获取月:月从0开始!!!,0表示一月

int month=c.get(Calendar.MONTH);

System.out.println("month:"+month);//7

/*

* 和天相关的时间分量

* DATE,DAY_OF_MONTH:是一致的,表示月中的第几天

* DAY_OF_YEAR:表示年中的天

* DAY_OF_WEEK:表示周中的天

* */

System.out.println(c.get(Calendar.DATE));

System.out.println(c.get(Calendar.DAY_OF_MONTH));

System.out.println(c.get(Calendar.DAY_OF_YEAR));

System.out.println(c.get(Calendar.DAY_OF_WEEK));

int dow=c.get(Calendar.DAY_OF_WEEK)-1;

String[] data={"日","一","二","三","四","五","六"};

System.out.println("周"+data[dow]);

//获取小时,分钟,秒 HOUR_OF_DAY:24小时 HOUR:12小时 

System.out.println(c.get(Calendar.HOUR_OF_DAY));//14

System.out.println(c.get(Calendar.HOUR));//2

System.out.println(c.get(Calendar.MINUTE));

System.out.println(c.get(Calendar.SECOND));

}

}

import java.util.Calendar;

public class T05Calendar2 {

public static void main(String[] args) {

Calendar c=Calendar.getInstance();

//获取年

int year=c.get(Calendar.YEAR);

System.out.println("year:"+year);//2016

//获取月:月从0开始!!!,0表示一月

int month=c.get(Calendar.MONTH);

System.out.println("month:"+month);//7

/*

* 和天相关的时间分量

* DATE,DAY_OF_MONTH:是一致的,表示月中的第几天

* DAY_OF_YEAR:表示年中的天

* DAY_OF_WEEK:表示周中的天

* */

System.out.println(c.get(Calendar.DATE));

System.out.println(c.get(Calendar.DAY_OF_MONTH));

System.out.println(c.get(Calendar.DAY_OF_YEAR));

System.out.println(c.get(Calendar.DAY_OF_WEEK));

int dow=c.get(Calendar.DAY_OF_WEEK)-1;

String[] data={"日","一","二","三","四","五","六"};

System.out.println("周"+data[dow]);

//获取小时,分钟,秒 HOUR_OF_DAY:24小时 HOUR:12小时 

System.out.println(c.get(Calendar.HOUR_OF_DAY));//14

System.out.println(c.get(Calendar.HOUR));//2

System.out.println(c.get(Calendar.MINUTE));

System.out.println(c.get(Calendar.SECOND));

}

}

(4)set()方法设置时间分量

/**

 * 设置时间分量

 * @author zc

 *

 */

public class T06Calendar3 {

public static void main(String[] args){

//表示2008-08-08 20:08:08

//设置年

Calendar c=Calendar.getInstance();

c.set(Calendar.YEAR,2008);

//设置月,月从0开始

c.set(Calendar.MONTH,Calendar.AUGUST);

//设置日

c.set(Calendar.DATE, 8);

//设置时

c.set(Calendar.HOUR_OF_DAY,20);

//设置分

c.set(Calendar.SECOND,8);

//设置秒

c.set(Calendar.MINUTE,8);

System.out.println(c.getTime());

//!!!设置的时间分量超出后,会自行进位

}

}

(5)add()方法在当前时间分量基础上修改时间分量

(6)getActualMaximum()获取某个时间分量所允许的最大值

public class T07Calendar4 {

public static void main(String[] args) {

Calendar c=Calendar.getInstance();

//查看当月共多少天

int days=c.getActualMaximum(Calendar.DAY_OF_MONTH);

System.out.println(days);

//查看今年多少天

int doy=c.getActualMaximum(Calendar.DAY_OF_YEAR);

System.out.println(doy);

int t=c.getActualMaximum(Calendar.MINUTE);

System.out.println(t);

}

}

四、Date、SimpleDateFormat和Calendar的一个综合实例

public void test01() throws ParseException{

//要求用户输入一个日期,计算后,指定格式输出日期

/*String--SimpleDateFormat()-->Date

Date-->Calendar

使用Calendar进行相应计算

Calendar-->Date

Date--SimpleDateFormat-->String

*/

String input="2013-03-26";

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

Date date=sdf.parse(input);

Calendar c=Calendar.getInstance();

//set(),与add()

c.setTime(date);

c.add(Calendar.YEAR,1);

c.set(Calendar.MONTH,0);

c.set(Calendar.DAY_OF_WEEK,1);

date=c.getTime();

SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");

String strTime=sdf2.format(date);

System.out.println(strTime);

}