我有一个项目需求。 .txt 中的值如下 -
02/01/2017 00:00:00
现在我需要一些规则来检查数据文件中的这个值是否是日期类型。我怎样才能做到这一点?谢谢。我是 Java 新手,所以非常感谢任何帮助。谢谢
这是 Java 8 解决方案(当您使用 ThreeTen Backport 时,它也可以在 Java 6 和 7 中工作)。
private static final DateTimeFormatter DATE_TIME_FORMAT
= DateTimeFormatter.ofPattern("MM/dd/uuuu HH:mm:ss")
.withResolverStyle(ResolverStyle.STRICT);
public static boolean hasTypeDate(String stringFromTxt) {
try {
DATE_TIME_FORMAT.parse(stringFromTxt);
return true;
} catch (DateTimeParseException dtpe) {
return false;
}
}
远离
SimpleDateFormat
以获取新代码。它已经过时了,现在已经过时了一段时间了。
如果您希望先显示月份中的某一天(如果
02/01/2017
表示 1 月 2 日),则需要使用格式模式 dd/MM/uuuu HH:mm:ss
。
如果您需要知道
.txt
中的日期和时间,请使用:
LocalDateTime dateTime = LocalDateTime.parse(stringFromTxt, DATE_TIME_FORMAT);
java.time
Java 6 和 7 的类。
尝试解析它的最新情况。如果它抛出
ParseException
那么它不是一个日期。
String dateString = "02/01/2017 00:00:00";
DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
Date date;
try {
date = df.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
如果你只想要有效天数,请使用非宽松解析:
String dateString = "02/28/2017 00:00:00";
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
df.setLenient(false);
Date date;
try {
date = df.parse(dateString);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
对于 2 月 31 日等不存在的日子,这会引发异常
方法1
Date dt = new Date(); //this should your Dynamic object
if (dt.getClass().equals(new Date().getClass()))
{
//if its date object
}
方法2
if(dt instanceof Date){
//if its date object
}
用它来检查日期
String sDate1="31/12/1998 00:00:00";
try{
Date date1=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").parse(sDate1); `
}
catch(Exception e)
{
//Not a date..
}
您可以使用正则表达式来检查格式
public boolean isDate(String s){
String pattern= "([0-9]{2})/([0-9]{2})/([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2})";
return s.matches(pattern);}
public static boolean isValidDate(String inDate) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
try {
dateFormat.parse(inDate.trim());
} catch (ParseException pe) {
return false;
}
return true;
}
public static void main(String[] args) {
String file = "/path/to/your/file.txt";
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line;
while ((line = br.readLine()) != null) {
// do something with line
}
br.close();
isValidDate(line));
//do what you want :)
}