1.时间日期类
1.Date
类
- 常用方法
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日期对象从1970年1月1日00:00:00 到现在的毫秒值 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
- 示例代码
package study02;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
Date d = new Date();
//| `public long getTime()` | 获取的是日期对象从`1970年1月1日00:00:00`到现在的毫秒值 |
System.out.println(d.getTime());
System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年");//计算距离1970年1月1日多少年
//| `public void setTime(long time)` | 设置时间,给的是毫秒值 |
// long time = 1000*60*100;
//currentTimeMillis();返回当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数
long time = System.currentTimeMillis();
d.setTime(time);
System.out.println(d);
}
}
2.SimpleDateFormat
类
-
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 final String format(Date date)
:将日期格式化成日期/时间字符串
-
解析(
String
到Date
)public Date paese(String source):
从给定字符串的开始解析文本以生成日期
-
-
示例代码
package study02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date d = new Date();
// Date到String
// 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 = "2048-08-09 11:11:11";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);
// 字符串ss的格式必须与SimpleDateFormat()的括号中的格式一致
}
}
3. 日期工具类案例
-
案例需求
定义一个日期工具类(
DateUtils
),包含两个方法:把日期转换为指定格式的字符串;把字符串转换为指定格式的日期,然后定义一个测试类(DateDemo
),测试日期工具类方法 -
代码实现
- 工具类
package study03; 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 study03; import java.text.ParseException; import java.util.Date; public class DateDemo { public static void main(String[] args) throws ParseException { //DateToString 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); System.out.println("================="); //StringToDate String s3 = "2021年08月28日 12:12:12"; Date d1 = DateUtils.stringToDate(s3,"yyyy年MM月dd日 HH:mm:ss"); System.out.println(d1); } }
4.Calendar
类
-
Calendar
类概述Calendar
为了特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法Calendar
提供了一个类方法getInstance
用于获取这种类型的一般有用的对象。该方法返回一个
Calendar
对象。其日历字段已使用当前日期和时间初始化:
Calendar rigtNow = 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) | 设置当前日历的年月日 |
package study05;
import java.util.Calendar;
import java.util.Date;
public class calendarDemo {
public static void main(String[] args) {
Calendar s = Calendar.getInstance();//多态的形式
// public int get(int field)
// int year = s.get(Calendar.YEAR);
// int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
// int day = s.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + day + "日");
// public abstract void add (int field,int amount)
//需求:三年前的今天
/* s.add(Calendar.YEAR,-3);
int year = s.get(Calendar.YEAR);
int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
int day = s.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");*/
/* //需求:十年后的五天前
s.add(Calendar.YEAR,10);
s.add(Calendar.DATE,-5);
int year = s.get(Calendar.YEAR);
int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
int day = s.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");*/
// public final void set(int year,int month,int date)
s.set(2064,11,11);
int year = s.get(Calendar.YEAR);
int month = s.get(Calendar.MONTH) + 1;//月份是从0开始的
int day = s.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
}
}
案例:二月天
需求:获取任意一年的二月有多少田
package study05;
import java.util.Calendar;
import java.util.Scanner;
public class test {
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 date = c.get(Calendar.DATE);
System.out.println(year + "年的2月份有" + date + "天");
}
}