字符 | 描述 | 示例 |
---|---|---|
[abc] | 匹配 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中所有的 h l o 字母 |
[^ABC] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母 |
[^a-z] | 匹配除了 […] 中所有字符 | [hlo] 匹配字符串 "hello world" 中除了 a 到 z 的所有字母 |
[A-Z] | [A-Z] 表示一个区间,匹配所有的大写字母 | [A-Z] 匹配字符串 "Hello world" 结果为 H |
字符 | 描述 | 示例 |
---|---|---|
. | 匹配任意单个字符,除了换行符 | a.b、1.2 |
* | 匹配前一个字符零次或多次 | go*gle、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle、colou+r |
? | 匹配前一个字符零次或一次 | colou?r、col(o)?r |
| | 表示“或”的意思,用于匹配多个选项中的一个 | apple|orange、yes|no |
[] | 用于定义字符类,匹配方括号内的任意一个字符 | [aeiou]、[0-9] |
() | 用于分组,可以改变默认的优先级和应用限定符 | (go)+、(abc|def) |
$ | 匹配输入字符串的结尾位置,如果设置了 RepExp 对象的 Multiline 属性,则 $ 也匹配‘\n’或‘\r’ | … |
{ | 标记限定表达式的开始 | … |
| | 指明两项直接的一个选择 | … |
字符 | 描述 | 示例 |
---|---|---|
\n | 匹配换行符 | Hello\nWorld |
\r | 匹配回车符 | Hello\rWorld |
\t | 匹配制表符 | Hello\tWorld |
\v | 匹配垂直制表符 | Hello\vWorld |
\s | 匹配任意空白字符,包括空格、制表符、换页符等 | Hello World |
\S | 匹配任意非空白字符,不包括换行 | 我暂时不知道 |
\d | 匹配任意数字字符,相当于 [0-9] | 12345、9am |
\w | 匹配任意字母、数字或下划线字符,相当于 [a-zA-Z0-9_] | hello_world_123 |
字符 | 描述 | 示例 |
---|---|---|
* | 匹配前一个字符零次或多次 | go*gle、colou*r |
+ | 匹配前一个字符一次或多次 | go+gle、colou+r |
? | 匹配前一个字符零次或一次 | colou?r、col(o)?r |
{n} | 匹配前一个字符恰好出现 n 次 | go{2}gle、colou{3}r |
{n,} | 匹配前一个字符至少出现 n 次 | go{2,}gle、colou{3,}r |
{n,m} | 匹配前一个字符出现 n 到 m 次 | go{2,5}gle、colou{3,7}r |
字符 | 描述 | 示例 |
---|---|---|
^ | 匹配字符串的开头 | ^Hello、^[A-Z] |
$ | 匹配字符串的结尾 | World$、[0-9]$ |
\b | 匹配单词的边界 | \btest\b、\bword\b |
\B | 匹配非单词边界 | \Btest\B、\Bword\B |
Date类位于 java.util 包中,用于表示特定的时间点。
方法 | 描述 |
---|---|
getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 |
toString() | 将日期对象转换为字符串形式。 |
compareTo(Date anotherDate) | 比较两个日期的顺序。返回值为 0 表示相等,大于 0 表示当前日期在参数日期之后,小于 0 表示当前日期在参数日期之前。 |
equals(Object obj) | 检查该日期对象是否等于另一个日期对象。 |
before(Date when) | 检查当前日期是否在指定日期之前。 |
after(Date when) | 检查当前日期是否在指定日期之后。 |
setTime(long time) | 设置日期对象的时间值。 |
例题1 : Date使用
public class DateDemo01 { public static void main(String[] args) { // 创建一个表示当前时间的 Date 对象 Date date = new Date(); System.out.println(date); // Thu Aug 24 22:35:10 CST 2023 // 获取 Date 对象的时间(毫秒数) long timeInMillis = date.getTime(); System.out.println(timeInMillis); // 1692887710157 // 创建一个指定时间的 Date 对象 Date specifiedDate = new Date(1640886000000L); System.out.println(specifiedDate); // Fri Dec 31 01:40:00 CST 2021 // 比较两个 Date 对象的时间 boolean isBefore = date.before(specifiedDate); boolean isEquals = date.equals(specifiedDate); boolean isAfter = date.after(specifiedDate); System.out.println(isBefore); // false System.out.println(isEquals); // false System.out.println(isAfter); // true } }
Calender 类是 java 中用于处理日期和时间的类,位于 java.util 包中。它提供了一种比 Date 类更灵活和功能更强大的日期和时间操作方式。
方法 | 描述 |
---|---|
getTime() | 返回一个表示此 Calendar 时间值(从历元到现在毫秒偏移量)的 Date 对象。 |
get(int field) | 返回给定日历字段的值。 |
set(int field, int value) | 设置给定日历字段的值。 |
add(int field, int amount) | 根据日历的规则,将指定的时间量添加到给定日历字段。 |
roll(int field, int amount) | 根据日历的规则,将给定的时间量添加到给定日历字段,但不更改较大的字段值。 |
getActualMaximum(int field) | 返回指定日历字段的最大值。 |
getActualMinimum(int field) | 返回指定日历字段的最小值。 |
getDisplayName(int field, int style, Locale locale) | 返回给定字段值的本地化表示名称。 |
getFirstDayOfWeek() | 返回一个代表每周的第一天的值。 |
setFirstDayOfWeek(int value) | 设置一星期中的第一天是哪一天。 |
getMinimum(int field) | 返回给定日历字段的最小值。 |
getMaximum(int field) | 返回给定日历字段的最大值。 |
例题2 : Calender使用
import java.util.Calendar; import java.util.Date; public class CalenderDemo01 { public static void main(String[] args) { // 获取当前时间和日期的 Calender 对象 Calendar calendar = Calendar.getInstance(); System.out.println(calendar); // java.util.GregorianCalendar[time=1692889224235,areFieldsSet=true,···] // 设置日期为指定的年份、月份和日 1970年2月1日 calendar.set(1970, 1, 1); System.out.println(calendar); // java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllField···] // 获取年份 int year = calendar.get(Calendar.YEAR); System.out.println(year); // 1970 // 获取月份(月份从 0 开始计数) int month = calendar.get(Calendar.MONTH) + 1; System.out.println(month); // 2 // 获取当前月份中的第几天 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(dayOfMonth); // 1 // 月份加 1 calendar.add(Calendar.MONTH, 1); // 输出修改过后的月份 System.out.println(calendar.getTime()); // Sun Mar 01 23:00:24 CST 1970 // 将 Calender 转换为 Date 对象 Date date = calendar.getTime(); System.out.println(date); // Sun Mar 01 23:00:24 CST 1970 } }
Calender 和 Date 相互转换
import java.util.Calendar; import java.util.Date; public class CalenderDeom02 { // 创建一个 Calender 对象 public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); // 设置日期为指定的日期 calendar.set(1970, 0, 1); // 获取当前的日期和时间 Date date = calendar.getTime(); System.out.println(date); // Thu Jan 01 23:25:45 CST 1970 // 将 Calender 转换为 Date Date convertedDate = calendar.getTime(); System.out.println(convertedDate); // Thu Jan 01 23:25:45 CST 1970 // 创建一个新的 Date 对象 Date newDate = new Date(70, 1, 1); // 将 Date 转换为 Calender Calendar convertedCalender = Calendar.getInstance(); convertedCalender.setTime(newDate); System.out.println(convertedCalender); // java.util.GregorianCalendar[time=2649600000,areFieldsSet=true,areAllFieldsSet=true... } }
请注意,尽管 Date 类和 Calendar 类仍然存在于 Java 中,但在 Java 8 及更高版本中,推荐使用新版的日期时间类(如 LocalDate、LocalTime、LocalDateTime)来替代旧版的 Date 和 Calendar 类,因为新版的类更加简洁、易用,并且线程安全。
SimpleDateFormat 类是 Java 中用于日期和时间格式化的类,它位于 java.text 包中。它允许将 Date 对象格式化为指定的日期和时间字符串,或将日期和时间字符串解析为 Date 对象。
方法 | 描述 |
---|---|
SimpleDateFormat(String pattern) | 使用指定的日期模式创建一个 SimpleDateFormat 对象。 |
String format(Date date) | 将给定的 Date 对象格式化为字符串,使用 SimpleDateFormat 的日期模式。 |
Date parse(String source) | 将给定的字符串解析为 Date 对象,使用 SimpleDateFormat 的日期模式。 |
void setLenient(boolean lenient) | 设置解析过程是否宽松,即是否严格遵循日期格式。 |
String toPattern() | 返回当前日期模式。 |
void applyPattern(String pattern) | 使用给定的日期模式更新当前日期模式。 |
DateFormatSymbols getDateFormatSymbols() | 获取与该日期格式化程序相关联的 DateFormatSymbols 对象,用于获取或设置本地化信息(如月名、星期几名等)。 |
void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) | 设置与该日期格式化程序相关联的 DateFormatSymbols 对象,用于设置本地化信息(如月名、星期几名等)。 |
例题3 :SimpleDateFormatExample使用
import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatExample { public static void main(String[] args) { Date date = new Date(); // 创建 SimpleDateFormat 对象,并指定格式化模式,默认2023/8/25 上午10:59 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm:ss:SSS"); // 格式化 Date 对象为字符串 String formatDate = sdf.format(date); System.out.println(formatDate); // 2023-08-25 上午 11:02:59:178 // 解析字符串为 Date 对象 String dateString = "1949-10-01 下午 3:30:45:123"; try { Date parsedDate = sdf.parse(dateString); System.out.println(parsedDate); } catch (Exception e) { e.printStackTrace(); } } }
LocalDate 是 Java 中的一个日期类,它提供了处理日期的方法和功能。LocalDate 类位于 java.time 包中,从 JDK 8 引入。LocalDate 是不可变类型,final 修饰储存值的数组。
方法 | 描述 |
---|---|
static LocalDate now() | 返回当前日期。 |
static LocalDate of(int year, int month, int dayOfMonth) | 根据指定的年、月、日创建一个 LocalDate 对象。 |
int getYear() | 获取日期中的年份。 |
Month getMonth() | 获取日期中的月份,返回一个 Month 枚举对象。 |
int getDayOfMonth() | 获取日期中的月份中的天数。 |
DayOfWeek getDayOfWeek() | 获取日期中的星期几,返回一个 DayOfWeek 枚举对象。 |
LocalDate plusDays(long daysToAdd) | 返回当前日期加上指定天数后的日期。 |
LocalDate minusDays(long daysToSubtract) | 返回当前日期减去指定天数后的日期。 |
boolean isBefore(LocalDate other) | 检查当前日期是否在另一个日期之前。 |
boolean isAfter(LocalDate other) | 检查当前日期是否在另一个日期之后。 |
boolean isEqual(LocalDate other) | 检查当前日期是否等于另一个日期。 |
String format(DateTimeFormatter formatter) | 将日期格式化为指定的字符串格式。 |
例题4 : LocalDate使用
import java.time.LocalDate; import java.time.Month; import java.time.format.DateTimeFormatter; public class LocalDateDemo01 { public static void main(String[] args) { // 创建 LocalDate 对象 LocalDate today = LocalDate.now(); // 当前日期创建对象 System.out.println(today); // 2023-08-25 LocalDate specificDate = LocalDate.of(1970, 1, 1); // 指定日期创建对象 System.out.println("specificDate" + specificDate); // 1970-01-01 // 解析字符串为 LocalDate 对象 LocalDate parseDate = LocalDate.parse("1949-10-01"); System.out.println("parseDate" + parseDate); // 1949-10-01 // 获取日期信息 int year = today.getYear(); System.out.println("年份" + year); // 年份2023 Month month = today.getMonth(); System.out.println("月份" + month); // AUGUST int mon = today.getMonthValue(); System.out.println("月份" + mon); // 8 int day = today.getDayOfYear(); // 一年中的第几天 System.out.println(day); // 237 int day1 = today.getDayOfMonth(); // 当月的第多少天 System.out.println(day1); // 25 // 增加、减少日期 LocalDate futureDate = specificDate.plusDays(7); System.out.println("增加日期:" + futureDate); // 增加日期:1970-01-08 LocalDate pastDate = specificDate.minusMonths(1); System.out.println("减少日期:" + pastDate); // 减少日期:1969-12-01 // 判定日期关系 boolean isBefore = specificDate.isBefore(parseDate); System.out.println(isBefore); // false boolean isAfter = specificDate.isAfter(parseDate); System.out.println(isAfter); // true boolean isEqual = specificDate.isEqual(parseDate); System.out.println(isEqual); // false // 格式化日期 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String fomattedDate = specificDate.format(formatter); System.out.println("格式化后的日期" + fomattedDate); // 格式化后的日期1970-01-01 } }
Date 和 LocalDate 相互转换
import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; public class DateLocalDateConversionExample { public static void main(String[] args) { //将Date对象转换为LocalDate对象 Date date = new Date(); LocalDate localDate = dateToLocalDate(date); System.out.println(localDate); // 将LocalDate对象转换为Date对象 LocalDate localDate1 = LocalDate.of(1970, 1, 1); Date convertedDate = localDatetoDate(localDate1); System.out.println(convertedDate); } // 将LocalDate对象转换为Date对象 private static Date localDatetoDate(LocalDate localDate1) { ZoneId zoneId = ZoneId.systemDefault(); return Date.from(localDate1.atStartOfDay(zoneId).toInstant()); } // 将Date对象转换为LocalDate对象 private static LocalDate dateToLocalDate(Date date) { ZoneId zoneId = ZoneId.systemDefault(); return date.toInstant().atZone(zoneId).toLocalDate(); } }
LocalTime 是 Java 中的一个时间类,它提供了处理时间的方法和功能。LocalDate 类位于 java.time 包中,从 JDK 8 引入。LocalTime 是不可变类型,final 修饰储存值的数组。
方法 | 描述 |
---|---|
static LocalTime now() | 返回当前时间。 |
static LocalTime of(int hour, int minute) | 根据指定的小时和分钟创建一个 LocalTime 对象。 |
int getHour() | 获取时间中的小时数。 |
int getMinute() | 获取时间中的分钟数。 |
int getSecond() | 获取时间中的秒数。 |
LocalTime plusHours(long hoursToAdd) | 返回当前时间加上指定小时数后的时间。 |
LocalTime minusHours(long hoursToSubtract) | 返回当前时间减去指定小时数后的时间。 |
LocalTime plusMinutes(long minutesToAdd) | 返回当前时间加上指定分钟数后的时间。 |
LocalTime minusMinutes(long minutesToSubtract) | 返回当前时间减去指定分钟数后的时间。 |
LocalTime plusSeconds(long secondsToAdd) | 返回当前时间加上指定秒数后的时间。 |
LocalTime minusSeconds(long secondsToSubtract) | 返回当前时间减去指定秒数后的时间。 |
boolean isBefore(LocalTime other) | 检查当前时间是否在另一个时间之前。 |
boolean isAfter(LocalTime other) | 检查当前时间是否在另一个时间之后。 |
boolean isEqual(LocalTime other) | 检查当前时间是否等于另一个时间。 |
String format(DateTimeFormatter formatter) | 将时间格式化为指定的字符串格式。 |
例题5 : LocalTime使用
import java.time.LocalTime; import java.time.format.DateTimeFormatter; public class LocalTimeDemo01 { public static void main(String[] args) { // 创建 LocalTime 对象 LocalTime now = LocalTime.now(); System.out.println("当前时间" + now); // 当前时间19:56:31.828827500 LocalTime specificTime = LocalTime.of(14, 30); System.out.println("指定时间" + specificTime); // 指定时间14:30 // 解析字符串为 loCalTime 对象 LocalTime parsedTime = LocalTime.parse("08:45:30"); System.out.println("解析后的时间" + parsedTime); // 解析后的时间08:45:30 // 获取时间信息 int hour = now.getHour(); System.out.println("小时数" + hour); // 小时数19 int minute = now.getMinute(); System.out.println("分钟数" + minute); // 分钟数56 int second = now.getSecond(); System.out.println("秒数" + second); // 秒数31 // 增加、减少时间 LocalTime futureTime = now.plusHours(3); System.out.println("未来时间:" + futureTime); // 未来时间:22:56:31.828827500 LocalTime pastTime = now.minusMinutes(15); System.out.println("过去时间:" + pastTime); // 过去时间:19:41:31.828827500 // 判定时间关系 boolean isBefore = now.isBefore(specificTime); System.out.println(isBefore); // false boolean isEqusl = pastTime.equals(futureTime); System.out.println(isEqusl); // false boolean isAfter = pastTime.isAfter(futureTime); System.out.println(isAfter); // false // 格式化时间 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); String formattedTime = now.format(formatter); System.out.println(formattedTime); // 19:56:31 } }
在判定日期时间关系中,日期是否相等为 isEqual() ,时间为 equals() 。
LocalDateTime 是 Java 中的一个日期时间类,LocalDate 类位于 java.time 包中,从 JDK 8 引入。它结合了 LocalDate 和 LocalTime 的功能,用于表示日期和时间的组合。
方法 | 描述 |
---|---|
static LocalDateTime now() | 返回当前日期和时间。 |
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute) | 根据指定的年、月、日、小时和分钟创建一个 LocalDateTime 对象。 |
LocalDate toLocalDate() | 获取 LocalDateTime 对象中的日期部分,返回一个 LocalDate 对象。 |
LocalTime toLocalTime() | 获取 LocalDateTime 对象中的时间部分,返回一个 LocalTime 对象。 |
int getYear() | 获取日期时间中的年份。 |
Month getMonth() | 获取日期时间中的月份,返回一个 Month 枚举对象。 |
int getDayOfMonth() | 获取日期时间中的月份中的天数。 |
int getHour() | 获取时间中的小时数。 |
int getMinute() | 获取时间中的分钟数。 |
LocalDateTime plusDays(long daysToAdd) | 返回当前日期时间加上指定天数后的日期时间。 |
LocalDateTime minusDays(long daysToSubtract) | 返回当前日期时间减去指定天数后的日期时间。 |
LocalDateTime plusHours(long hoursToAdd) | 返回当前日期时间加上指定小时数后的日期时间。 |
LocalDateTime minusHours(long hoursToSubtract) | 返回当前日期时间减去指定小时数后的日期时间。 |
LocalDateTime plusMinutes(long minutesToAdd) | 返回当前日期时间加上指定分钟数后的日期时间。 |
LocalDateTime minusMinutes(long minutesToSubtract) | 返回当前日期时间减去指定分钟数后的日期时间。 |
LocalDateTime plusSeconds(long secondsToAdd) | 返回当前日期时间加上指定秒数后的日期时间。 |
LocalDateTime minusSeconds(long secondsToSubtract) | 返回当前日期时间减去指定秒数后的日期时间。 |
boolean isBefore(LocalDateTime other) | 检查当前日期时间是否在另一个日期时间之前。 |
boolean isAfter(LocalDateTime other) | 检查当前日期时间是否在另一个日期时间之后。 |
boolean isEqual(LocalDateTime other) | 检查当前日期时间是否等于另一个日期时间。 |
String format(DateTimeFormatter formatter) | 将日期时间格式化为指定的字符串格式。 |
例题6 : LocalDateTime使用
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class LocalDateTimeDemo { public static void main(String[] args) { // 创建 LocalDateTime 对象 LocalDateTime now = LocalDateTime.now(); LocalDateTime specificDateTime = LocalDateTime.of(1949, 10, 1, 14, 20); System.out.println("指定日期时间" + specificDateTime); // 指定日期时间1949-10-01T14:20 // 解析字符串为 LocalDateTime 对象 LocalDateTime parsedDateTime = LocalDateTime.parse("1970-01-01T09:00:00"); System.out.println("解析后的日期时间" + parsedDateTime); // 解析后的日期时间1970-01-01T09:00 // 获取日期时间信息 LocalDate date = specificDateTime.toLocalDate(); System.out.println("日期部分" + date); // 日期部分1949-10-01 int year = specificDateTime.getYear(); System.out.println("年份" + year); // 年份1949 int minute = specificDateTime.getMinute(); System.out.println("分钟数" + minute); // 分钟数20 // 减少、增加日期时间 LocalDateTime futureDateTime = specificDateTime.plusDays(7).plusHours(3); System.out.println("增加日期时间" + futureDateTime); // 增加日期时间1949-10-08T17:20 // 判定日期时间关系 boolean isEqual = parsedDateTime.isEqual(specificDateTime); System.out.println(isEqual); // false // 格式化日期时间 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"); String formattedDateTime = parsedDateTime.format(formatter); System.out.println("格式化后的日期时间为" + formattedDateTime); // 格式化后的日期时间为1970-01-01 09:00:00:000 } }
上一篇:shell 正则表达式详解