1. 时间日期类
1.1 Date类(应用)
-
Date类概述
Date 代表了一个特定的时间,精确到毫秒
-
Date类构造方法
方法名 | 说明 |
---|---|
public Date() | 分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒 |
public Date(long date) | 分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 |
public class DateDemo01 {
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);
}
}
1.2 Date类常用方法(应用)
- 常用方法
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
import java.util.Date;
/*
public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
*/
/*
public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
public void setTime(long time):设置时间,给的是毫秒值
*/
public class test {
public static void main(String[] args) {
//创建日期对象
Date d = new Date();
//public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年");
//public void setTime(long time):设置时间,给的是毫秒值
// long time = 1000*60*60;
long time = System.currentTimeMillis();
d.setTime(time);
System.out.println(d);
}
}
1.3 SimpleDateFormat类(应用)
-
SimpleDateFormat类概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
我们重点学习日期格式化和解析 -
SimpleDateFormat类构造方法
方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认模式和日期格式 |
public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat使用给定的模式和默认的日期 格式 |
-
SimpleDateFormat类的常用方法
-
格式化(从Date到String)
- public final String format(Date date):将日期格式化成日期/时间字符串
-
解析(从String到Date)
- public Date parse(String source):从给定字符串的开始解析文本以生成日期
示例代码
- public Date parse(String source):从给定字符串的开始解析文本以生成日期
-
package Heima.SimpleDateFormat.test1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
构造方法:
public SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化:从 Date 到 String
public final String format(Date date):将日期格式化成日期/时间字符串
解析:从 String 到 Date
public Date parse(String source):从给定字符串的开始解析文本以生成日期
*/
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//格式化:从Date到String
Date d = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
//解析 String---Date
String ss = "2029-08-22 11:11:11";//ParseException
SimpleDateFormat sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
案例:日期工具类
- 案例需求
定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式
的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法
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 d, String format){
SimpleDateFormat sdf =new SimpleDateFormat(format);
String d1 = sdf.format(d);
return d1;
}
/*
把字符串解析为指定格式的日期
返回值类型:Date
参数:String s, String format
*/
public static Date stringtodate(String s,String format) throws ParseException {
SimpleDateFormat dd = new SimpleDateFormat(format);
Date p = dd.parse(s);
return p;
}
}
import java.text.ParseException;
import java.util.Date;
public class DateUtilsTest {
public static void main(String[] args) throws ParseException {
Date d = new Date();
String format = "yyyy年MM月dd日 HH时mm分ss秒";
//Date--String
String datetostring = DateUtils.datetostring(d, format);
System.out.println(datetostring);
//String--Date
String ss = "2029-08-22 11:11:11";
String format2 = "yyyy-MM-dd HH:mm:ss";
Date stringtodate = DateUtils.stringtodate(ss, format2);
System.out.println(stringtodate);
}
}
1.4Clalendar类(日历类)
-
Calendar类概述
Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
该方法返回一个Calendar 对象。
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance(); -
Calendar类常用方法
方法名 | 说明 |
---|---|
public int get(int field) | 返回给定日历字段的值 |
public abstract void add(int field, int amount) | 根据日历的规则,将指定的时间量添加或减去给定的日 历字段 |
public final void set(int year,int month,int date) | 设置当前日历的年月日 |
import java.util.Calendar;
/*
Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象,该方法返回一个 Calendar 对象,
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
*/
public class CalendarDemo {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();//多态形式常见对象
System.out.println(c);
//public int get(int filed)
int year = c.get(Calendar.YEAR);
int mouths = c.get(Calendar.MONTH)+1;
int days = c.get(Calendar.DATE);
System.out.println(year+"Year"+mouths+days);
}
}
//需求1:3年前的今天
// c.add(Calendar.YEAR,-3);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//需求2:10年后的10天前
// c.add(Calendar.YEAR,10);
// c.add(Calendar.DATE,-10);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//public final void set(int year,int month,int date):设置当前日历的年月日
c.set(2050,10,10);
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
案例:二月天
- 获取任意一年的二月有多少天
/*
需求:
获取任意一年的二月有多少天
思路:
1:键盘录入任意的年份
2:设置日历对象的年、月、日
年:来自于键盘录入
月:设置为3月,月份是从0开始的,所以设置的值是2
日:设置为1日
3:3月1日往前推一天,就是2月的最后一天
4:获取这一天输出即可
*/
import java.util.Calendar;
import java.util.Scanner;
public class ErYueTian {
public static void main(String[] args) {
//键盘录入任意的年份
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
//设置日历对象的年、月、日
Calendar c = Calendar.getInstance();
c.set(year,2,1);
//3月1日往前推一天,就是2月的最后一天
c.add(Calendar.DATE,-1);
//获取这一天输出即可
int i = c.get(Calendar.DATE);
System.out.println(year+"年的二月份有"+i+"天");
}
}