java.util.Date
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// Date类的空参数构造方法
// Date( )获取当前系统的日期和时间
Date date1 = new Date();
System.out.println(date1); // Tue Jul 21 21:24:52 CST 2020
}
}
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// Date带参数构造方法 Date(long date)
// 传递毫秒值,将毫秒值转化为date日期
Date date2 = new Date(0L);
System.out.println(date2); // Thu Jan 01 08:00:00 CST 1970
System.out.println(System.currentTimeMillis()); //1595339511344L
Date date3 = new Date(1595339511344L);
System.out.println(date3); //Tue Jul 21 21:51:51 CST 2020
}
}
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
//getTime()把日期转化为毫秒值。
//相当于System.currentTimeMillis()
Date date4 = new Date();
long time = date4.getTime();
System.out.println(time); //1595340386133
}
}
java.text.DateFormat
java. text. DateFormat :是日期/时间格式化子类的抽象类
作用:格式化(也就是日期->文本)、解析(文本->日期)
成员方法:
String format(Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
java. text. SimpleDateFormat extends DateFormat
构造方法: SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
String pattern: 传递指定的模式
模式:区分大小写的
y 年
M 月
d 日
H 时
m 分
s 秒
写对应的模式,会把模式替换为对应的日期和时间“yyyy-MM-dd HH:mm:ss”
注意:
模式中的字母不能更改,连接模式的符号可以改变 “yyyy年MM月dd日 HH时mm分ss秒”
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 使用DateFormat类中的方法format,把日期格式化为文本
**/
public class DateFormateTest {
public static void main(String[] args) {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒");
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
Date date = new Date(); // Date( )获取当前系统的日期和时间
String s = sdf.format(date); //日期转化为字符串
System.out.println(date); //Wed Jul 22 17:00:22 CST 2020
System.out.println(s); //2020年07月22日 17时 00分 22秒
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 使用DateFormat类中的方法parse,把文本解析为日期
**/
public class DateFormateTest {
public static void main(String[] args) throws ParseException {
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒");
//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
Date date2 = sdf2.parse("2020年07月22日 17时 00分 22秒");
System.out.println(date2); //Wed Jul 22 17:00:22 CST 2020
}
}
注意:
public Date parse(String source) throws ParseException
parse方法声明了一个异常叫ParseException
如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理
java.util.Calendar
java. util. calendar类:日历类
Calendar类是一一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_ OF_ MONTH、HOUR )
Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance( ),该方法返回了Calendar类的子类对象
static Calendar getInstance( ) 使用默认时区和语言环境获得一个日历。
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //返回一个子类对象 多态
System.out.println(c);
/* 返回:
* java.util.GregorianCalendar[time=1595433162158,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=2020,MONTH=6,WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=22,
* DAY_OF_YEAR=204,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=11,
* HOUR_OF_DAY=23,MINUTE=52,SECOND=42,MILLISECOND=158,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
}
}
Calendar类的常用成员方法:
public int get(int field): 返回给定日历字段的值。
public void set(int field, int value):将给定的日历字段设置为给定值。
public abstract void add(int field, int amount): 根据日历的规则,为给定的日历字段添加或减去指定的时间量。public Date getTime( ):返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
成员方法的参数:
int field:日历类的字段,可以使用Calendar类的静态成员变量获取
public static final int YEAR = 1; 年
public static final int MONTH = 2; 月
public static final int DATE = 5; 月中的某一天
public static final int DAY_ OF_ MONTH = 5; 月中的某一天
public static final int HOUR = 10; 时
public static final int MINUTE = 12; 分
public static final int SECOND = 13; 秒
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
/**
public int get(int field): 返回给定日历字段的值。
参数:传递指定的日历字段(YEAR, MONTH...)
返回值:日历字段代表的具体的值
*/
Calendar c = Calendar.getInstance(); //返回一个子类对象 多态
int year = c.get(Calendar.YEAR);
System.out.println(year); //2020
int month = c.get(Calendar.MONTH);
System.out.println(month); //6
int day = c.get(Calendar.DATE);
System.out.println(day); //23
}
}
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
/*
public void set(int field, int value): 将给定的日历字段设置为给定值。
参数:int field:传递指定的日历字段(YEAR, MONTH...)
int value:给指定字段设置的值
*/
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2050);
c.set(Calendar.MONTH,5);
System.out.println(c.get(Calendar.YEAR)); //2050
System.out.println(c.get(Calendar.MONTH)); //5
//同时设置年月,使用set的重载方法
c.set(2020, 8, 8);
System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH));//2020 8
}
}
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
/*public abstract void add(int field, int amount):
根据日历的规则,为给定的日历字段添加或减去指定的时间量。把指定的字段增加/减少指定的值
参数:int field:传递指定的日历字段(YEAR, MONTH...)
int amount:増加/減较少指定的値
正数:増加 负数:減少
*/
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 3); //将年份增加3
c.add(Calendar.MONTH, -6); //将月份减去6
}
}
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
/*
public Date getTime(): 返回一个表示此Calendar时间值〈从万元到現在的毫秒偏移量〉的Date对象。
把日历对象转化为日期对象
private static void demo04()
*/
Calendar c = Calendar.getInstance();
Date date = c.getTime();
System.out.println(date); //Thu Jul 23 00:46:09 CST 2020
}
}
java.time.LocalDate
import java.time.LocalDate;
public class LocalDateTest {
public static void main(String[] args) {
//获取当前日期
LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1); //2020-07-23
//根据参数设置年月日
LocalDate localDate2 = LocalDate.of(2050, 5, 5);
System.out.println(localDate2); //2050-05-05
/**获取天信息*/
LocalDate localDate3 = LocalDate.now();
//获取当前日期在是星期几(星期的英文全称)
System.out.println(localDate3.getDayOfWeek()); //THURSDAY
//获取当前日期在是在月的第几天
System.out.println(localDate3.getDayOfMonth()); //23
//获取当前日期在是在年的第几天
System.out.println(localDate3.getDayOfYear()); //205
/**获取月份信息*/
LocalDate localDate4 = LocalDate.now();
//获取当前日期所在月份(月份的英文全称)
System.out.println(localDate4.getMonth()); //JULY
//获取当前日期所在月份的数值
System.out.println(localDate4.getMonthValue()); //7
//获取当前日期的月份有几天
System.out.println(localDate4.lengthOfMonth()); //31
/**获取年份信息*/
LocalDate localDate5 = LocalDate.now();
//获取当前日期所在月份的数值
System.out.println(localDate5.lengthOfYear()); //366
//判断当前日期所在年份是否为闰年
System.out.println(localDate5.isLeapYear()); //true
/**with开头的方法 将参数替换localDate日期中对应的属性 重新计算并得出新日期*/
LocalDate localDate6 = LocalDate.now();
System.out.println(localDate6+" 一年中的第"+localDate6.getDayOfYear()+"天");
//2020-07-23 一年中的第205天
//替换localDate日期中的“日”
System.out.println(localDate6.withDayOfMonth(10)); //2020-07-10
//替换localDate日期中的“天数”(一年中的第几天) 205-->200
System.out.println(localDate6.withDayOfYear(200)); //2020-07-18
//替换localDate日期中的“月”
System.out.println(localDate6.withMonth(6)); //2020-06-23
//替换localDate日期中的“年”
System.out.println(localDate6.withYear(2050)); //2050-07-23
//将当前日期减一天
System.out.println(localDate6.minusDays(1)); //2020-07-22
//将当前日期减一周
System.out.println(localDate6.minusWeeks(1)); //2020-07-16
//将当前日期减一个月 一年..
//将当前日期加一天
System.out.println(localDate6.plusDays(1)); //2020-07-24
//将当前日期加一周
System.out.println(localDate6.plusWeeks(1)); //2020-07-30
//将当前日期加一个月 一年..
}
}
java.time.LocalTime
import java.time.LocalTime;
public class LocalTimeTest {
public static void main(String[] args) {
//获取当前时间
LocalTime localTime1 = LocalTime.now();
System.out.println(localTime1); //17:58:41.219
//根据参数设置时分 (时分秒)
LocalTime localTime2 = LocalTime.of(8, 8);
System.out.println(localTime2); //08:08
LocalTime localTime3 = LocalTime.now();
//获取当前时间的小时数
System.out.println(localTime3.getHour()); //17
//获取当前时间的分钟数
System.out.println(localTime3.getMinute()); //58
//获取当前时间的秒数
System.out.println(localTime3.getSecond()); //41
/**with开头的方法 将参数替换localTime时间中对应的属性 重新计算并得出新时间*/
LocalTime localTime4 = LocalTime.now();
System.out.println("设置前时间是:"+localTime4); //设置前时间是:17:58:41.221
//替换localTime时间中的“小时”
System.out.println(localTime4.withHour(6)); //06:58:41.221
//替换localTime时间中的“分钟”
System.out.println(localTime4.withMinute(06)); //17:06:41.221
//替换localTime时间中的“秒”
System.out.println(localTime4.withSecond(06)); //17:58:06.221
LocalTime localTime5 = LocalTime.now();
System.out.println("设置前时间是:"+localTime5); //设置前时间是:17:58:41.221
//将当前时间减一小时
System.out.println(localTime5.minusHours(1)); //16:58:41.221
//将当前时间减一分钟
System.out.println(localTime5.minusMinutes(1)); //17:57:41.221
//将当前时间减一分钟
System.out.println(localTime5.minusSeconds(1)); //17:58:40.221
//将当前时间加一小时
System.out.println(localTime5.plusHours(1)); //18:58:41.221
//将当前时间加一分钟,秒钟..
}
}
java.time.LocalDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeTest {
public static void main(String[] args) {
//定义时间字符串格式化模板
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//获取当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime); //2020-07-24T15:56:17.179
//使用模板化对象,格式化时间
String g = formatter.format(localDateTime);
System.out.println(g); //2020-07-24 15:56:17
//将时间字符串,根据模板解析为LocalDateTime
String string = "1998-01-01 13:13:13";
LocalDateTime parse = LocalDateTime.parse(string,formatter);
System.out.println(parse); //1998-01-01T13:13:13
//时间比较
LocalDateTime nowTime = LocalDateTime.now(); //现在的时间 2020-07...
System.out.println(nowTime.isBefore(parse)); //false
System.out.println(nowTime.isAfter(parse)); //true
System.out.println(nowTime.isEqual(nowTime)); //true
}
}