public static void main(String[] args) {
String dt = "2021-08-09 8:03";//这里可以匹配多种格式见下面说明
String regExp = "^[1-9]\\d{3}(-(0?[1-9]|1[0-2])(-(0?[1-9]|[1-2][0-9]|3[0-1])(\\s(20|21|22|23|[0-1]?\\d)(:[0-5]?\\d(:[0-5]?\\d)?)?)?)?)?$";
long temp = 0;
if(dt.matches(regExp)){
temp = temp(dt, check(dt,"-"));
System.out.println(temp);
private static String check(String dt,String flag) {
StringBuffer sb = new StringBuffer("yyyy");
int i = dt.indexOf(flag);
if (i<0){
return sb.toString();
}else if(dt.length()<8){
sb.append(flag).append("MM");
return sb.toString();
}else if(dt.length()<11){
sb.append(flag).append("MM").append(flag).append("dd");
return sb.toString();
}else if(dt.indexOf(":")<0){
sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH");
return sb.toString();
}else if(dt.lastIndexOf(":")>14){
sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH").append(":mm").append(":ss");
return sb.toString();
}else {
sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH").append(":mm");
return sb.toString();
private static long temp(String dateTime,String template) {
long time = (new SimpleDateFormat(template)).parse(dateTime, newParsePosition(0)).getTime() ;
System.out.println(time);
System.out.println(System.currentTimeMillis());
return time;
说明:dt输入类型可以是匹配的格式
yyyy 格式:2021
yyyy-MM或yyyy-M格式:2021-08 或2021-8
yyyy-MM-dd或yyyy-M-d或yyyy-MM-d或yyyy-M-dd:2021-08-24 或 2021-8-24 或 2021-07-3等
yyyy-MM-dd HH或yyyy-M-d H或yyyy-MM-d H等格式:2021-08-09 08 或2021-08-9 8 等
yyyy-MM-dd HH:mm或yyyy-M-d H:m或yyyy-MM-d H:mm等:2021-08-09 17:08 或2021-08-9 8:2
yyyy-MM-dd HH:mm:ss 等格式:2021-08-09 08:03:57 或 2021-8-09 8:28:9 等
还可以把flage="/"就可以匹配yyyy/MM/dd HH:mm:ss 等格式
public static void main(String[] args) {String dt = "2021-08-09 8:03";//这里可以匹配多种格式见下面说明String regExp = "^[1-9]\\d{3}(-(0?[1-9]|1[0-2])(-(0?[1-9]|[1-2][0-9]|3[0-1])(\\s(20|21|22|23|[0-1]?\\d)(:[0-5]?\\d(:[0-5]?\\d)?)?)?)?)?$";long temp = 0;if(d.
TCHAR buffer[50] = {0};
struct tm Tm = {0};
time_t time = (time_t)NtHeader->FileHeader.TimeDateStamp;//时间戳
gmtime_s(&Tm, &time);
printf(buffer, TEXT(%d年%d月%d日 %d:%d:%d), Tm.tm_year+1900, Tm.tm_mon+1, Tm.tm_mday, Tm.tm_hour+8, Tm.tm_min, Tm.tm_sec);
//注意:这
public void match() {
String qq = &amp;quot;2017-09-19&amp;quot;;
// 验证日期格式为YYYY-MM-DD的正则表达式为
String regex = &amp;quot;(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3
文章目录年份月份日组合起来判断年月日判断时间是否符合要求综合判断yyyy-MM-dd HH:mm:ss后续可以优化
形式:yyyy-MM-dd HH:mm:ss
连字符可以有:-/. 空格 (没有的情况暂时不考虑,其实是应该考虑的)
范围:1 - 9999
需要排除0000等前置0的情况(只要前面有0,就不会匹配)
正则:((?!0{1,4})[0-9]{1,4})
范围:01 - 12 or 1 - 12
需要排除0 / 00 or 超过12的情况
正则:(0(?:[1-9])|1(?:[0-
以下正则没有考虑到平年和闰年
原文转载于https://blog.csdn.net/Rolandcoder/article/details/85317054
1.匹配日期格式:yyyy-MM-dd HH:mm:ss
String timeRegex = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9...
Java正则表达式匹配字符串,并将字符串转为带毫秒的时间格式
任务:要根据文件名进行正则表达式匹配,判断两种不同的命名方式,然后根据匹配到的字符串,转换为时间Date格式,再转为String格式输出。
文件名有两种:
如 LB7_RCD_50484_20211018_152054_442_S,需匹配加粗斜体部分
如 S2_AF131B-TFK5_13082020_145843748 000,需匹配加粗斜体部分
使用正则表达式匹配
String nameSite = "文件名";
//正则表达式