gpt4 book ai didi

java - 检查日期是否有效 java

转载 作者:行者123 更新时间:2023-12-01 14:06:28 25 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

去年关闭。




Improve this question




我正在尝试在 java 中创建一个方法来检查日期是否有效
格式 MM/dd/yyyy

public static boolean checkDate(String date)
{
Calendar cal = Calendar.getInstance();
int year=0,month=0,day=0;
int year2;

year=Integer.parseInt(date.substring(6));
day=Integer.parseInt(date.substring(3,5));
month=Integer.parseInt(date.substring(0,2));

year2=cal.get(Calendar.YEAR);

if(date.length() != 10)
return false;
if(year==year2||year<=year2-100)
return true;
else if(month>12||month<1)
return true;
else if(day<1)
return true;
else if(month==2&&day>28)
return true;
else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>31)
return true;
else if((month!=1||month!=3||month!=5||month!=7||month!=8||month!=10||month!=12)&&day>31)
return true;
else
return false;
}

由于某种原因,它不起作用,我不知道为什么。如果有人能看到我是否犯了一个简单的错误,请告诉我。

最佳答案

tl;博士

try 
{
LocalDate ld =
LocalDate.parse(
"01/23/2021" ,
DateTimeFormatter.ofPattern( "MM/dd/uuuu" )
)
;
}
catch ( DateTimeFormatException e )
{
… handle faulty input
}
java.time.LocalDateDateTimeFormatException
永远不要使用糟糕的日期时间类,例如 CalendarDate .仅使用 JSR 310 定义的现代 java.time 类。

定义格式模式以匹配您的输入。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ;

将您的输入解析为 LocalDate目的。
LocalDate ld = LocalDate.parse( input , f ) ;

陷阱 DateTimeFormatException 如果输入错误,则抛出。
try 
{
LocalDate ld = LocalDate.parse( input , f ) ;
}
catch ( DateTimeFormatException e )
{
… handle faulty input
}

关于 java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 上搜索许多示例和解释。规范是 JSR 310 .

Joda-Time项目,现在在 maintenance mode ,建议迁移到 java.time类。

您可以直接与数据库交换 java.time 对象。使用 JDBC driver符合 JDBC 4.2或以后。不需要字符串,不需要 java.sql.*类。 Hibernate 5 & JPA 2.2 支持 java.time。

从哪里获得 java.time 类?
  • Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11 ,以及更高版本 - 标准 Java API 的一部分,具有捆绑的实现。
  • Java 9 添加了一些小功能和修复。
  • Java SE 6Java SE 7
  • 大多数 java.time 功能在 ThreeTen-Backport 中向后移植到 Java 6 和 7。 .
  • Android
  • 更高版本的 Android 捆绑实现 java.time 类。
  • 对于早期的 Android (<26),ThreeTenABP项目适应 ThreeTen-Backport (上文提到的)。见 How to use ThreeTenABP… .
  • 关于java - 检查日期是否有效 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61966525/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com