文章目录
JAVA常用类——Date
- 概述:
类 Date 表示特定的瞬间,精确到毫秒。 - 构造方法
Date() 表示年月日 时分秒 分配Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒) Date date = new Date(); System.out.prinln(date); //打印当前的日期 输出为:Wed Nov 06 17:25:35 CST 2019 ------------------------------ Date(long date) 按照计算机元年日期+date的毫秒指定日期来生成一个Date()对象! Date date1 = new Date(1000 * 60 *60* 24); System.out.println(date1); 输出为: Fri Jan 02 08:00:00 CST 1970
- JAVA的Date中有很多过时的方法,如果需要做更多关于时间的工作,还是用其他新类比较好
- JAVA过时的方法如何注明?
public class Myutils{ @Deprecated //注解符号:用来表示此类或者此方法过时! public static viod add(){ *****; } }
- 获取一个日期对象对象毫秒值
public long getTime(): -------------------- //获取从1970 01-01 00:00:00 到 现在的时间 之间 的间隔的毫秒值 long time = date.getTime(); System.out.println(time); 输出: 1573032471090
- 给一个日期对象设置上指定的毫秒值 例:
public void setTime(long time): ------------------------- Date date1 = new Date(); //给计算机元年,加上相应的时间量 date1.setTime(1000*60*60*24); System.out.println(date1); 输出: Fri Jan 02 08:00:00 CST 1970
- long —Date 的转换 : 可以使用构造方法
- Date---- long 的转换:调用getTime方法
JAVA常用类——SimpleDataFormat(格式化日期)
-
概念:可以把日期格式化成我们的阅读习惯
-
示例:(把日期对象转换成字符串!)
// 创建一个格式化日期的类,如果使用是空参构造,那么格式化日期时,则按照默认格式来记性格式化 //默认格式:19-11-2 下午1:58 SimpleDateFormat dateFormat = new SimpleDateFormat(); String dateTime = dateFormat.format(date); //date来自于 new Date(); System.out.println(dateTime) 输出: 19-11-6 下午5:44 --------------------------------------- //使用有参构造传入格式(自定义格式!) SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒S毫秒 E") String dateTime2 = dateFormat2.format(date); System.out.println(dateTime2) 输出: 2019年11月06日 17时44分01秒702毫秒 星期三
-
使用有参构造传入格式
规则的定义: (如下表)
符号 | 含义 |
---|---|
y | 年 |
M | 月 |
d | 天 |
H | 时 |
m | 分 |
s | 秒 |
S | 毫秒 |
E | 星期几 |
- 示例:(把日期字符串转换为日期对象!)
//在解析日期字符串时,注意日期格式和字符串对应,如果对应不上,则报错:解析异常错误! String dateStr = "2015-10-10 14:20:20" SimpleDateFormat dateFormt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") Date date = dateFormat.parse(dateStr);// 注意,如果要使用这个接口,必须把定义该语句的方法设为异常,即:要把(该类抛出一个异常,可用万能纠错键直接添加!) 注意:返回的对象是Date()类的! 例如: public class Myutils { public static Date stringToDate(String str) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date result = dateFormat.parse(str); return result; } public static String dateToString(Date date){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); String result = dateFormat.format(date); return result; } }
案例:创建日期转换的工具类:
- 代码示例:
public class DateUtils { private DateUtils() { } //把日期字符串,转换成Date 日期对象 public static Date getDate(String dateStr, String format) throws ParseException { Date date = new SimpleDateFormat(format).parse(dateStr); return date; } //把当前日期对象,转换成日期字符串 public static String getDateString(String format) { String dateStr = new SimpleDateFormat(format).format(new Date()); return dateStr; } }
案例:计算你活了多少天
- 代码示例:
public class Myutils {
public static Date stringToDate(String str,String pattern) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
Date result = dateFormat.parse(str);
return result;
}
public static String dateToString(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String result = dateFormat.format(date);
return result;
}
}
--------------------------------------
public class Test1 {
public static void main(String[] args) throws ParseException {
System.out.println("请输入您的出生日期:");
String input_birthday = new Scanner(System.in).nextLine();
System.out.println("请输入您的出生日期的输入格式:");
String pattern = new Scanner(System.in).nextLine();
Date birthday = Myutils.stringToDate(input_birthday,pattern);
Date current = new Date();
long result = (current.getTime() - birthday.getTime())/(1000*60*60*24);
System.out.println("你已经活了"+result+"天!");
}
}
-----------------
输出:
请输入您的出生日期:
1995-09-15
请输入您的出生日期的输入格式:
yyyy-MM-dd
你已经活了8814天!
Java常用类——Calendar
基础概念已经使用方法:
- 概念:针对Date类中过时的操作,Java提供了另外一个类Calendar 来操作日期。
- 特点:
a. Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。
b. 它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法。
c. 并为操作日历字段(例如获得下星期的日期)提供了一些方法。 - 成员方法:
public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象 public int get(int field) 获得给定日历字段对应的值 field通过Calendar提供的字段来拿(其中field字段有很多种类型,参考示例!)
- 示例:(Calender类成员方法使用)
public class MyTest { public static void main(String[] args) { //针对Date类中过时的操作,Java 提供了另外一个类 Calendar 来操作日期 //这个Calendar 中有一个静态方法getInstance()可以获取到该类的一个子类对象 Calendar instance = Calendar.getInstance(); // System.out.println(instance); //get() 方法 int year = instance.get(Calendar.YEAR); int month = instance.get(Calendar.MONTH); int day = instance.get(Calendar.DAY_OF_MONTH); int hour = instance.get(Calendar.HOUR_OF_DAY); int min = instance.get(Calendar.MINUTE); int s = instance.get(Calendar.SECOND); System.out.println(year); System.out.println(month); System.out.println(day); System.out.println(hour); System.out.println(min); System.out.println(s); } } -------------- 输出: 2019 10(月份是从:0~11) 7 14 38 51
Calendar类的add()和set()方法:
- 成员方法:
public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量 public final void set(int year,int month,int date) 设置日历时间 年月日
- set()方法的案例:
public class MyTest2 {
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
获取当前的时间:
System.out.println(instance.get(Calendar.MONTH));
System.out.println(instance.get(Calendar.YEAR));
设置格式:(年月日 时分秒)
instance.set(2011, 12, 10);
int i = instance.get(Calendar.YEAR);
System.out.println(i);
System.out.println(instance.get(Calendar.MONTH));
只给对象的某个字段设置值:
instance.set(Calendar.MONTH,2);
System.out.println(instance.get(Calendar.MONTH));
}
}
----------------
输出:
10
2019
2012(注意:这里从2011变成了2012)
0(注意:这里从12变成了0,因为月份设置里本来就是从0~11,所以12就成了下一年的1月份了)
2
- add()方法的案例:(给当前日期添加或减去时间量)
public class MyTest3 {
public static void main(String[] args) {
获取Calendar的实例对象:
Calendar instance = Calendar.getInstance();
给对应的字段,加上或减去时间量(减去 使用负值)
instance.add(Calendar.YEAR,-1);
System.out.println(instance.get(Calendar.YEAR));
}
}
---------------------------
输出:
2018
- 案例:(判断是否是闰年!)
public class MyTest4 {
public static void main(String[] args) {
/* A:
案例演示
需求:键盘录入任意一个年份,获取任意一年的二月有多少天*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个年份:");
int year = scanner.nextInt();
-----------------------------------
怎么判断是闰年(方法一:太麻烦)
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.out.println("是闰年");
}
-------------------------------
方法二:
把日期设置到这一年的3月1号
然后,减去1天 就回到 2月的最后一天 ,然后我取出这天
Calendar instance = Calendar.getInstance();
instance.set(year, 2, 1);
instance.add(Calendar.DAY_OF_MONTH, -1);
int day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
}
}
---------------------
输出:
请输入一个年份:
2004
29(是闰年)
请输入一个年份:
2018
28(不是闰年)