日期类
-
Date类概述和构造方法
Date代表了一个特定的时间,精确到毫秒
| 方法名 | 说明 |
|---|---|
| public Date() | 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 |
| public Date(long Date) | 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 |
public class IntegerDemo5 {
public static void main(String[] args) {
//public Date()分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
Date d1=new Date();
System.out.println(d1);
//public Date(long Date)分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
long date =1000*60*60;
Date d2=new Date(date);
System.out.println(d2);
}
}
Tue Aug 17 16:19:31 CST 2021
Thu Jan 01 09:00:00 CST 1970
-
Date类的常用类
| 方法名 | 说明 |
|---|---|
| public long getTime() | 获取的是日期对象1970年1月1日00:00:00到现在的毫秒值 |
| public void setTime(long time) | 设置时间,给的是毫秒值 |
package BZN;import java.util.Date;
/** * public long getTime()获取的是日期对象1970年1月1日00:00:00到现在的毫秒值
* public void setTime(long time)设置时间,给的是毫秒值
*/
public class IntegerDemo6 {
public static void main(String[] args) {
//创建日期
Date d1 = new Date();
//public long getTime()获取的是日期对象1970年1月1日00:00:00到现在的毫秒值
System.out.println("现在时间是:"+d1);
//public void setTime(long time)设置时间,给的是毫秒值
long time = 1000*60*60;
Date d2 = new Date();
//long time = System.currentTimeMillis();
d2.setTime(time);
System.out.println("java出生时间是:"+d2);
Date d3 = new Date();
System.out.println("距今"+d3.getTime()+"毫秒");
System.out.println("距今"+d3.getTime()*1.0/1000/60/60/24/365+"年");
}
}
现在时间是:Tue Aug 17 16:46:13 CST 2021
java诞生时间是:Thu Jan 01 09:00:00 CST 1970
距今1629189973797毫秒
距今51.66127517113775年
-
SimpleDateFormat 类概述
SimpleDateFormat是一个具体类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化和解析
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从"A"到"Z" 以及从"a"到"z"引号的字母被解释为表示日期或时间字符串的组件的模式字母
常用的模式字母及对应关系如下:
| y | 年 |
|---|---|
| M | 月 |
| d | 日 |
| H | 时 |
| m | 分 |
| s | 秒 |
-
SimpleDateFormat 的构造方法
| 方法名 | 说明 |
|---|---|
| public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认模式和日期格式 |
| public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat使用给定的模式和默认的日期格式 |
-
SimpleDateFormat 格式化和解析日期
-
格式化(从 Date到String)
public finalString format(Date date) : 将日期格式化成日期/时间字符串
-
解析(String 到 Date)
public Dateparse(String source) : 从给定字符串的开始解析文本以生成日期
package BZN;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;
/**
* - **SimpleDateFormat 的构造方法**
*
* public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
* public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式
*
* SimpleDateFormat 格式化和解析日期
*
* 1.格式化(从 Date到String)
*
* public final String format(Date date): 将日期格式化成日期/时间字符串
*
* 2. **解析(String 到 Date)**
*
* public Date parse(String source) : 从给定字符串的开始解析文本以生成日期
*/
public class IntegerDemo7 {
public static void main(String[] args) {
//格式化(从 Date到String)
Date d =new Date();
SimpleDateFormat sdf=new SimpleDateFormat();
String s = sdf.format(d);
System.out.println(s);
}
}
2021/8/19 下午4:42
package BZN;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class IntegerDemo8 {
public static void main(String[] args) throws ParseException {
//格式化(从 Date到String)
Date d =new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
System.out.println("-------------------------");
//从String 到 Date
String ss = "2021-08-09 11:11:11";
SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//ParseException
Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
2021年08月19日 16:43:41
-------------------------
Mon Aug 09 11:11:11 CST 2021
案例:日期工具类
需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期类,然后定义一个测试类(DateDemo),测试日期工具类的方法
思路:
-
定义日期工具类(DateUtils)
-
定义一个方法dateToString,用于把日期转换为指定格式的字符串
- 返回值类型: String
- 参数:Date date , String format -
定义一个方法stringToDate,用于把字符串解析为指定格式的日期
-
返回值类型: Date
-
参数: String s ,String format
-
定义测试类DateDemo,调用日期工具类中的方法
package BZN01;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/** * 工具类
*
* 构造方法私有
* 成员方法静态
*/
public class DateUtils {
//构造方法私有
private DateUtils(){}
/**
* 把日期转换为指定格式的字符串
* 返回值类型: String
* 参数:Date date , String format
*/
public static String dateToString(Date date, String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}
/**
* 把字符串解析为指定格式的日期
* 返回值类型: Date
*参数: String s ,String format
*/
public static Date stringToDate(String s,String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d =sdf.parse(s);
return d;
}
}
package BZN01;
import java.text.ParseException;
import java.util.Date;
/**
* 测试类
*/
public class DateDemo {
public static void main(String[] args) throws ParseException {
//创建日期对象
Date d = new Date();
String s1 = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1);
String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
System.out.println(s2);
String s3 = DateUtils.dateToString(d,"HH:mm:ss");
System.out.println(s3);
System.out.println("------------------------------------");
String s="2021-11-11 11:11:11";
Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
System.out.println(dd);
}
}
2021年08月20日 09:57:58
2021年08月20日
09:57:58
------------------------------------
Thu Nov 11 11:11:11 CST 2021
Calendar 类概述
Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar 提供了一个类方法getlnstance 用于获取Calendar 对象,其日历字段已使用当前日期和时间初始化;
Calendar rightNow = Calendar.getlnstance();

package BZN02;
import java.util.Calendar;
/**
* Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
* Calendar 提供了一个类方法getlnstance 用于获取Calendar 对象,其日历字段已使用当前日期和时间初始化; * Calendar rightNow = Calendar.getlnstance();
*/
public class CalendarDemo {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();//多态的形式
//System.out.println(c);
//public int get (int field)
int year =c.get(Calendar.YEAR);
int month =c.get(Calendar.MONTH)+1;
int date =c.get(Calendar.DATE);
System.out.println(year + "年" +month + "月" +date + "日");
}
}
2021年8月21日
Calendar 的常用方法
| 方法名 | 说明 |
|---|---|
| public int get(int field) | 返回给定日历字段的值 |
| public abstract void add(int field,int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段 |
| public final void set(int year,int month,int date) | 设置当前日历的年月日 |
package BZN02;
import java.util.Calendar;
/**
* public abstract void add(int field,int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段
* public final void set(int year,int month,int date) 设置当前日历的年月日
*/
public class CalendarDemo02 {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();
//多态的形式
//public abstract void add(int field,int amount)
根据日历的规则,将指定的时间量添加或减去给定的日历字段
//需求1;3年前的今天
c.add(Calendar.YEAR,-3);
int year =c.get(Calendar.YEAR);
int month =c.get(Calendar.MONTH)+1;
int date =c.get(Calendar.DATE);
System.out.println(year + "年" +month + "月" +date + "日");
}
}
2018年8月21日
package BZN02;
import java.util.Calendar;
public class CalendarDemo03 {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();
//多态的形式
//public int get (int field);返回给定日历字段的值
//需求2;10年后的5天前
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-5);
int year =c.get(Calendar.YEAR);
int month =c.get(Calendar.MONTH)+1;
int date =c.get(Calendar.DATE);
System.out.println(year + "年" +month + "月" +date + "日");
}
}
2031年8月16日
package BZN02;
import java.util.Calendar;
public class CalendarDemo04 {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();
//多态的形式
//public int get (int field);返回给定日历字段的值
// public final void set(int year,int month,int date)
设置当前日历的年月日
c.set(2021,11,11);
int year =c.get(Calendar.YEAR);
int month =c.get(Calendar.MONTH)+1;
int date =c.get(Calendar.DATE);
System.out.println(year + "年" +month + "月" +date + "日");
}
}
2021年12月11日
案例:二月天
需求:获取任意一年的二月有多少天
思路:
-
键盘输入任意年份
-
设置日历对象的年,月,日
-
年:来自于键盘录入
-
月:设置为3月,月份从0开始,所以设置的值是2
-
日:设置为1日
-
-
3月1日往前推一天,就在2月的最后一天
-
获取这一天的输出即可
package BZN02;
import java.util.Calendar;
import java.util.Scanner;
/**
* 需求:获取任意一年的二月有多少天
*
* 思路:
*
* 1. 键盘输入任意年份
* 2. 设置日历对象的年,月,日
* 年:来自于键盘录入
* 月:设置为3月,月份从0开始,所以设置的值是2
* 日:设置为1日
* 3. 3月1日往前推一天,就在2月的最后一天
* 4. 获取这一天的输出即可
*/
public class CalendarDemo05 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入年份:");
int year=sc.nextInt();
//设置日历对象的年,月,日
Calendar c = Calendar.getInstance();
//这里设置月份为2的意思就是,月份初始值为0所以三月份只需要输入2就可以
c.set(year,2,1);
//3月1日往前推一天,就在2月的最后一天
c.add(Calendar.DATE,-1);
//获取这一天的输出即可
int date = c.get(Calendar.DATE);
System.out.print(year+"年的2月份有"+date+"天");
}
}
请输入年份:2021
2021年的2月份有28天

浙公网安备 33010602011771号