【学习笔记】---时间日期API与正则表达式

本文详细介绍了Java中的时间日期API,包括Date的无参和带参构造方法,Calendar的构造方法和静态方法,LocalDate的静态方法,SimpleDateFormat的构造方法和时间格式化操作,以及DateTimeFormatter的格式设置。此外,还讲解了正则表达式的常用元字符、量词以及matches()匹配方法。
摘要由CSDN通过智能技术生成

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 构造方法

ModifierConstructor and Description
protected构建具有默认时区和默认的 FORMAT语言环境的日历。
protectedCalendar(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);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值