目
录
例:键盘录入任意一个年份,获取任意一年的二月有多少天.拿Calander类面向对象来完成.
针对日期,java提供了相对应的Date类.
一.Date类
1.类 Date 表示特定的瞬间,精确到毫秒
2.构造方法
- 空参构造: Date date = new Date();分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)
- 有参构造: Date date = new Date( long date);分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数也就是在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
public class Test {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString()); //Tue May 10 16:38:51 CST 2022
Date date1 = new Date(1000 * 60 * 60 * 24);
System.out.println(date1); //Fri Jan 02 08:00:00 CST 1970
}
}
3.Date类中的方法
- getTime(); 获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
- setTime(); 在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
- toString(); 该类重写了toString方法,会打印出相对应格式的日期
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
//获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
long time = date.getTime();
System.out.println(time); //1652172389909
//获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
long timeMillis = System.currentTimeMillis(); //该方法属于System类,功能是i相同的!
System.out.println(timeMillis); //1652172389909
//在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
date.setTime(1000 * 60 * 60 * 24);
System.out.println(date); //Fri Jan 02 08:00:00 CST 1970
System.out.println(date.toString()); //Fri Jan 02 08:00:00 CST 1970
}
}
4.Date类型与Long类型的相互转换
Date类型转换为Long类型(用getTime();)
- Date date = new Date(); long time = date.getTime();
Long类型转换为Date类型(用setTime();)
- 方法一:Date date = new Date(long time);
- 方法二:Date date = new Date(); date.setTime(long time);
import java.util.Date;
public class Test {
public static void main(String[] args) {
//Date------>long
Date date = new Date();
long time = date.getTime();
System.out.println(time); //1652172898683
//long------->Date
long num = 1000 * 60 * 60 * 24;
Date date1 = new Date(num);
System.out.println(date1); //Fri Jan 02 08:00:00 CST 1970
Date date2 = new Date();
date2.setTime(num);
System.out.println(date2); //Fri Jan 02 08:00:00 CST 1970
}
}
由上我们可以获取时间,但是时间的输出格式并不是咱们中国人的阅读习惯!毕竟咱们喜欢某年某月某日这样顺着的顺序!于是就出现了 SimpleDateFormat类.
二. SimpleDateFormat类
1.格式化日期的类 SimpleDateFormat
2.构造方法:
- 空参构造: SimpleDateFormat simpleDateFormat = new SimpleDateFormat(); 没有指定格式,按照默认格式输出.
- 有参构造: SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("放入时间格式 "); 按照指定格式输出.
- 补:这里面的格式是有要求的哈!( yyyy表示年 / MM表示月 / dd表示天 / HH表示时 / mm表示分 / ss表示秒 / E表示星期 常用的就是这些,还有很多呢,需要的话可以在api帮助文档里查查!)
3.Date类型与String日期字符串类型的转换
- 日期 Date转换成日期字符串 String(用format方法)
- 日期字符串 String转换成日期 Date(用parse方法解析字符串)
注意格式 和日期字符串的格式要对应,否则就解析失败.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateAndString {
public static void main(String[] args) throws ParseException {
//日期 Date-----日期字符串 String
Date date = new Date();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
String dateStr2 = simpleDateFormat1.format(date);
System.out.println(dateStr2); //2022年05月10日 17时12分09秒 星期二
//日期字符串 String----日期 Date
String dateStr = "2000-10-10 14:30:30";
//注意格式 和日期字符串的格式要对应,否则就解析失败。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = simpleDateFormat.parse(dateStr); //此处会出现异常,先抛出后期学习了再进一步了解
System.out.println(date1); //Tue Oct 10 14:30:30 CST 2000
}
}
三.Calendar类
1.Calendar 类
Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象.它其中包含了很多这样的特定瞬间的日历字段:YEAR、MONTH、DAY_OF_MONTH、HOUR,同时也为这些日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法.一般与Date类配合起来一块使用!
2.方法:
- getInstance(); 使用默认时区和语言环境获得一个日历对象
- get(int field); 获得给定日历字段对应的值 field通过Calendar提供的字段来拿
- add(int field,int amount); 根据日历的规则,为给定的日历字段添加或减去指定的时间量
- set(int year,int month,int date) 设置日历时间 年月日
import java.util.Calendar;
public class Test {
public static void main(String[] args) {
//static Calendar getInstance () 使用默认时区和语言环境获得一个日历
Calendar instance = Calendar.getInstance();
System.out.println(instance);
/*
该对象所包含的日历字段信息:
* java.util.GregorianCalendar[time=1651976698368,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar
* .ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,
* minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=20,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=128,DAY_OF_WEEK=1,
* DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=24,SECOND=58,MILLISECOND=368,ZONE_OFFSET=28800000,DST_OFFSET=0]
* */
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 minute = instance.get(Calendar.MINUTE);
int second = instance.get(Calendar.SECOND);
int week = instance.get(Calendar.DAY_OF_WEEK);
System.out.println(year); //2022
System.out.println(month); //4
System.out.println(day); //12
System.out.println(hour); //10
System.out.println(minute); //48
System.out.println(second); //39
System.out.println(week); //5
Calendar instance1 = Calendar.getInstance();
//设置年月日,时分秒
instance1.set(2000, 9, 2, 14, 20, 30);
int year1 = instance.get(Calendar.YEAR);
System.out.println(year1); //2022
//可以单个设置
instance1.set(Calendar.YEAR, 2005);
int year2 = instance1.get(Calendar.YEAR);
System.out.println(year2); //2005
Calendar instance2 = Calendar.getInstance();
//把当前的年份,加上3年
instance2.add(Calendar.YEAR, 3);
int year3 = instance2.get(Calendar.YEAR);
System.out.println(year3); //2025
//如果你要减去时间量,传入负数值
instance2.add(Calendar.DAY_OF_MONTH, -5);
int day3 = instance2.get(Calendar.DAY_OF_MONTH);
System.out.println(day3); //7
}
}
例:键盘录入任意一个年份,获取任意一年的二月有多少天.拿Calander类面向对象来完成.
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
Calendar instance = Calendar.getInstance();
//设置到一年的3月1号
instance.set(year, 2, 1);
//减去一天,取那个天数就是二月份的天数
instance.add(Calendar.DAY_OF_MONTH, -1);
int day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
}
}
(小编也在努力学习更多哟!以后再慢慢分享的啦!)
希望对友友们有所帮助!!!!