1. 时间日期API
1.1 Date
定义在java.util.Date 里面,表示特定的时间
方法声明 | 方法描述 |
---|---|
Date() | 使用当前时间构建Date对象; |
Date(long date) | 使用一个long值构建Date对象,参数是距离1970.1.1.00:00:00以来的毫秒数 |
1.1.1 Date( )无参构造方法
public Date():(使用当前时间构建对象),分配一个 Date
对象并对其进行初始化,以便它表示分配的时间,测量到最近的毫秒。
1.1.2 Date(long date)
分配一个 Date
对象,并将其初始化为表示从标准基准时间(称为“时代”)即1970年1月1日00:00:00 GMT起的指定毫秒数。
参数 :date
- 1970年1月1日 00:00:00 GMT以来的毫秒数。
1.2 Calendar
Calendar类是一个抽象类,不可以实例化
1.2.1 构造方法
Modifier | Constructor and Description |
---|---|
protected | 构建具有默认时区和默认的 FORMAT 语言环境的日历。 |
protected | Calendar(TimeZone zone, Locale aLocale)构造具有指定时区和区域设置的日历。 |
1.2.2 静态方法
方法声明 | 方法描述 |
---|---|
static Calendar getInstance( ) | 使用默认时区和语言环境获得日历对象; |
static Calendar getInstance(Locale aLocale) | 使用指定的语言环境获得日历对象; |
static Calendar getInstance(TimeZone zone) | 使用指定的时区获得日历对象; |
static Calendar getInstance(TimeZone zone, Locale aLocale) | 使用指定的时区及语言环境获得日历对象; |
方法声明 | 方法描述 |
---|---|
void set(int field, int value) | 为指定的日历字段设定值;月份从0开始 |
void set(int year, int month, int date) | 为年月日设定值; |
void set(int year, int month, int date, int hourOfDay, int minute) | 为年月日时分设定值; |
void set(int year, int month, int date, int hourOfDay, int minute, int second) | 为年月日时分秒设定值; |
- get(int field) : 返回给定日历字段的值。
//使用默认时区和语言环境获得日历对象
Calendar calendar1=Calendar.getInstance();
//使用指定时区和语言环境获得日历对象
Calendar calendar2=Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"),Locale.CHINA);
System.out.println(calendar1);
System.out.println(calendar2);
// 获取当前时间:
Date date = new Date();
Calendar calendar = Calendar.getInstance();
Calendar calenda1 = Calendar.getInstance();
// Date和Calendar之间的转换
Date date1 = calenda1.getTime();// Calendar--->Date
calendar.setTime(date);// Date--->Calendar
System.out.println(date);
System.out.println(calendar);
System.out.println(calenda1);
System.out.println(date1);
//以年月日格式输出当前时间
System.out.println(calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DATE)+"日");
System.err.println(calendar.get(Calendar.WEEK_OF_YEAR));
//运行结果:
//Thu Oct 29 19:11:02 CST 2020
//java.util.GregorianCalendar[time=1603969862277....
//java.util.GregorianCalendar[time=1603969862299....
//Thu Oct 29 19:11:02 CST 2020
//2020年10月29日
//44
1.3 LocalDate
LocalDate是一个不可变的日期时间对象,表示日期,通常被视为年月日。 也可以访问其他日期字段,例如日期,星期几和星期。 例如,值“2007年10月2日”可存储在LocalDate
1.3.1 静态方法
- now( ): 获取当前系统日期
- of(year,month,day):返回自定义的日期
- parse(CharSequence tex): 从一个文本字符串(如
2007-12-03
获取一个LocalDate
的实例。 - getYear():获取年份
- getMonthValue():获取月份
- getDayOfMonth():获取日
//string-->LocalDate
String str = "2020-10-29";
LocalDate d = LocalDate.parse(str);
System.out.println(d);
//string-->LocalTime
String str1 = "16:32:32";
LocalTime lt = LocalTime.parse(str1);
System.out.println(lt);
System.out.println("年:"+" "+d.getYear()+" "+"月:"+d.getMonthValue()+" "+"日:"+d.getDayOfMonth());
//运行结果:
//2020-10-29
//16:32:32
//年: 2020 月:10 日:29
1.4 SimpleDateFormat
SimpleDateFormat是一个具体的类,可以实例化。常用其有参构造方法
1.4.1 有参构造方法
- SimpleDateFormat(…):用于设定一个日期格式,比如:SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日)
- format(Object obj) :格式化一个对象来生成一个字符串。
- parse(String sourse):将字符串型的时间转换成固定格式的时间
时间日期转换成字符串:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = new Date();
Calendar calendar = Calendar.getInstance();
//使用format将Date或者Calendar类型时间转换成字符串
String str1 = sdf.format(date);
String str2 = sdf.format(calendar.getTime());
System.out.println(str1);
System.out.println(str2);
//运行结果:
//Thu Oct 29 20:11:01 CST 2020
//2020年10月29日
//2020年10月29日
时间字符串转换成固定格式时间:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日' 'HH:mm:ss");
//将字符串格式的时间转换成Date格式时间
String inputDate = "2020年10月29日 14:32:32";
Date d1 = sdf.parse(inputDate);
1.5 DateTimeFormatter
静态类,不可直接用new创建对象(实例)
1.5.1 静态类
- ofpattern(String pattern): 用于设置时间格式
//将LocalDate日期转成字符串格式输出
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss ");
String str = ldt.format(sdf);
//将字符串"20:32:32"以时间格式输出
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
String str = "20:32:32";
LocalTime ldt = LocalTime.parse(str,dtf);
System.out.println(ldt);
2. 中正则表达式
多作用于字符串的校验(邮箱地址,电话号码,邮编地址)
2.1 常用元字符
元字符 | 含义 |
---|---|
x | 字符 x |
\ | 反斜线字符 |
\0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh | 带有十六进制值 0x 的字符 hh |
\uhhhh | 带有十六进制值 0x 的字符 hhhh |
\t | 新行(换行)符 (’\u000A’) |
\r | 回车符 (’\u000D’) |
\f | 换页符 (’\u000C’) |
\a | 报警 (bell) 符 (’\u0007’) |
元字符 | 含义 |
---|---|
\e | 转义符 (’\u001B’) |
\cx | 对应于 x 的控制符 |
[abc] | a、b 或 c(简单类) |
[ ^abc ] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] | a 到 d 或 m 到 p,等同于:[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[ ^abc ]] | a 到 z,除了 b 和 c,等同于c:[ad-z](减去) |
[a-z&&[ ^m-p ]] | a 到 z,而非 m 到 p,等同于:[a-lq-z](减去) |
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字,等同于:[0-9] |
\D | 非数字,等同于: [ ^0-9 ] |
\s | 空白字符,等同于:[ \t\n\x0B\f\r] |
元字符 | 含义 |
---|---|
\S | 非空白字符,等同于:[ ^\s ] |
\w | 单词字符,等同于:[a-zA-Z_0-9] |
\W | 非单词字符,等同于:[ ^\w ] |
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词边界 |
\B | 非单词边界 |
\A | 输入的开头 |
\G | 上一个匹配的结尾 |
\Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
\z | 输入的结尾 |
2.2 常用量词
元字符 | 含义 |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
2.3 匹配方法matches()
public class TestReg {
public static void main(String[] args) {
String email = "kevin@qq.com";
String reg = "^[a-zA-Z||[@]||[.]]{12}$";
boolean b = email.matches(reg);//将邮箱地址与reg匹配,返回布尔值
System.out.println(b);
}
}