java中如何校验yyyymmddhhmmss日期格式
时间: 2024-06-08 15:09:06 浏览: 150
可以使用正则表达式来校验yyyymmddhhmmss日期格式,如下所示:
```java
public static boolean isValidDateFormat(String date) {
String regex = "^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9]$";
return date.matches(regex);
}
```
其中,正则表达式解释如下:
- `^` 表示字符串的开头
- `[0-9]{4}` 表示4位数字,即年份
- `(0[1-9]|1[0-2])` 表示月份,范围是01-12
- `(0[1-9]|[12][0-9]|3[01])` 表示日期,范围是01-31
- `([01][0-9]|2[0-3])` 表示小时,范围是00-23
- `[0-5][0-9]` 表示分钟和秒钟,范围是00-59
- `$` 表示字符串的结尾
使用示例:
```java
String date = "20211031235959";
if (isValidDateFormat(date)) {
System.out.println("日期格式正确");
} else {
System.out.println("日期格式错误");
}
```
相关问题
java 注解参数校验日期格式YYYYMMDDhhmmss
以下是Java中注解参数校验日期格式YYYYMMDDhhmmss的方法:
1. 首先,我们需要定义一个注解,用于标记需要校验的日期格式:
```java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DateValid {
String message() default "Invalid date format, should be yyyyMMddHHmmss";
String format() default "yyyyMMddHHmmss";
}
```
2. 然后,在需要校验日期格式的类中,我们可以使用该注解标记需要校验的日期字段:
```java
public class DateEntity {
@DateValid
private String date;
// other fields and methods
}
```
3. 最后,我们需要定义一个校验器,用于校验注解标记的日期字段是否符合指定的日期格式:
```java
public class DateValidator implements ConstraintValidator<DateValid, String> {
private String format;
@Override
public void initialize(DateValid constraintAnnotation) {
this.format = constraintAnnotation.format();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
sdf.parse(value);
return true;
} catch (ParseException e) {
return false;
}
}
}
```
以上就是Java中注解参数校验日期格式YYYYMMDDhhmmss的方法。
java生成发票号码、校验码的代码
当然可以,以下是一个Java生成发票号码和校验码的代码示例:
```
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class InvoiceCode {
// 根据当前时间生成发票号码
public static String getInvoiceCode() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
StringBuilder sb = new StringBuilder();
sb.append(sdf.format(new Date()));
Random random = new Random();
for (int i = 0; i < 4; i++) {
sb.append(random.nextInt(10));
}
return sb.toString();
}
// 根据发票号码生成校验码
public static String getCheckCode(String invoiceCode) {
int[] nums = new int[8];
for (int i = 0; i < invoiceCode.length(); i++) {
nums[i] = Integer.parseInt(String.valueOf(invoiceCode.charAt(i)));
}
int[] factors = {2, 1, 2, 1, 2, 1, 2, 1};
int[] remainders = new int[8];
for (int i = 0; i < 8; i++) {
remainders[i] = (nums[i] * factors[i]) % 10;
}
int sum = 0;
for (int i = 0; i < 8; i++) {
sum += remainders[i];
}
int checkCode = (10 - (sum % 10)) % 10;
return String.valueOf(checkCode);
}
public static void main(String[] args) {
String invoiceCode = getInvoiceCode();
String checkCode = getCheckCode(invoiceCode);
String fullInvoiceCode = invoiceCode + checkCode;
System.out.println(fullInvoiceCode);
}
}
```
希望能对你有所帮助!如果您有其他问题,请随时问我。
阅读全文