Java日期正则表达式

Java日期正则表达式

在Java开发中,日期是常见的数据类型之一,经常需要进行日期格式验证、转换、操作等处理。为了方便对日期进行有效的处理,在Java中使用正则表达式对日期进行格式校验是非常必要的。本文将分享Java日期正则表达式的相关知识。

日期格式化

Java中提供了SimpleDateFormat类来格式化日期,通过定义日期格式化模板,可以将日期转换成指定的字符串或将字符串转换成日期对象。在进行日期格式化时,需要先了解Java中常见的日期格式化符号,如表所示:

符号 说明
y
M
d
H 24小时制的小时
h 12小时制的小时
m 分钟
s
S 毫秒

通过这些符号的组合,可以构成日期格式化模板。例如,yyyy-MM-dd HH:mm:ss表示年月日时分秒。

以下是将日期按照指定格式格式化的示例代码:

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = sdf.format(date);
        System.out.println(str);
    }
}

上述代码中,我们首先通过Date类获取当前系统时间,然后使用SimpleDateFormat类定义日期格式化模板,并将日期转换成字符串输出。

日期正则表达式

在Java中,使用正则表达式对日期进行格式校验,可以通过Pattern类和Matcher类来实现。

匹配年月日格式

以下是匹配年月日格式的正则表达式示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DateDemo {
    public static boolean isMatched(String target) {
        String regex = "^\\d{4}-\\d{2}-\\d{2}$";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(target);
        return matcher.matches();
    }

    public static void main(String[] args) {
        String str1 = "2020-01-01";
        String str2 = "2020-01-1";
        System.out.println(isMatched(str1));
        System.out.println(isMatched(str2));
    }
}

在上面的示例代码中,我们定义了一个名为isMatched的方法,用于判断字符串是否匹配年月日的格式。正则表达式^\d{4}-\d{2}-\d{2}$的含义为:以四位数字开头,然后是一个连字符-,接着两位数字,再以连字符-作为分割,最后两位数字结束。Matcher类的matches方法用于返回匹配结果,如果匹配成功则返回true,否则返回false。

匹配日期时间格式

以下是匹配日期时间格式的正则表达式示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DateDemo {
    public static boolean isMatched(String target) {
        String regex = "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(target);
        return matcher.matches();
    }

    public static void main(String[] args) {
        String str1 = "2020-01-01 12:00:00";
        String str2 = "2020-01-01 12:00:0";
        System.out.println(isMatched(str1));
        System.out.println(isMatched(str2));
    }
}

在上面的示例代码中,我们同样定义了一个名为isMatched的方法,用于判断字符串是否匹配日期时间格式。正则表达式^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$的含义为:以四位数字开头,然后是一个连字符-,接着两位数字,再以连字符-作为分割,最后是两位数字,表示小时;接着是一个冒号:,然后再接两位数字,表示分钟;最后再接冒号:,然后是两位数字,表示秒数。同样利用Matcher类的matches方法判断匹配结果。

日期操作

除了日期格式化和正则表达式校验,Java中还可以使用Date类和Calendar类进行日期操作。以下是几个常见的日期操作示例:

将字符串转换成日期对象

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        String str = "2020-01-01 12:00:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(str);
        System.out.println(date);
    }
}

在上述代码中,我们通过SimpleDateFormat类将字符串转换成日期对象。

计算时间差

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        Date start = new Date();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Date end = new Date();
        long diff = end.getTime() - start.getTime();
        System.out.println("时间差为:" + diff + "毫秒");
    }
}

在上述代码中,我们通过Date类获取当前系统时间,并通过Thread.sleep方法模拟了一个5秒钟的时间差。

获取指定日期对应的一周中的星期几

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        String str = "2020-01-01";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date date = sdf.parse(str);
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
            System.out.println("星期" + dayOfWeek);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们通过SimpleDateFormat类将字符串转换成日期对象,然后通过Calendar类获取对应日期的星期几。

结论

本文介绍了Java日期正则表达式的相关知识,包括日期格式化、日期格式校验、日期操作等。通过学习本文,您可以更加灵活地进行Java程序中的日期处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程