这是一个程序,它比较输入的字符串date(expdate)和当前日期(today),并且仅在expDate大于当前日期时返回“有效的Expiry Date”。
import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/* Name of the class has to be "Main" only if the class is public. */
class expiryDateLogic
{
public static void main (String[] args) throws java.lang.Exception
{
String expdate = "07-11-2018"; // Text Date Input
if (!expdate.equals("")) { // If null no checking
DateFormat format = new SimpleDateFormat("dd-mm-yyyy");
Date expDate = (Date) format.parse(expdate); // Convert expdate to type Date
SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
Date current = new Date();
String td = formatter.format(current);
Date today = (Date) formatter.parse(td); // Current date
System.out.println(today);
System.out.println(expDate);
// System.out.println(expDate.compareTo(today));
if (expDate.before(today)) { // Date Comparison
System.out.println("Invalid Expiry Date");
} else {
System.out.println("Valid Expiry Date");
}
} else {
System.out.println("No Expiry Date Present");
}
}
}
如果expDate是当前日期,则此代码不起作用。请帮助
答案 0 :(得分:0)
import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.format.DateTimeFormatter;
public class ExpiryDateLogic {
public static void main(String[] args) {
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
ZoneId zone = ZoneId.of("Asia/Kolkata");
String expDateString = "07-11-2018"; // Text Date Input
if (expDateString.isEmpty()) {
System.out.println("No Expiry Date Present");
} else {
LocalDate expDate = LocalDate.parse(expDateString, dateFormatter);
LocalDate today = LocalDate.now(zone);
System.out.println("Today: " + today);
System.out.println("Expiration: " + expDate);
if (expDate.isBefore(today)) {
System.out.println("Invalid Expiry Date");
} else {
System.out.println("Valid Expiry Date");
}
}
}
}
我今天(11月9日)跑步时的输出:
Today: 2018-11-09 Expiration: 2018-11-07 Invalid Expiry Date
LocalDate
是没有时间的日期,因此似乎比老式的Date
更适合您的要求,老式java.time
的名称是时间点,而不是日期。因此,上面的代码也比您的代码简单。
由于在所有时区中都不会是同一日期,所以我为可预测的结果明确指定了时区。
是的,java.time仅需要至少 Java 6 (我已经在Java 7上测试了上面的代码)。
org.threeten.bp
包中导入带有子包( not org.threeten.bp
)的类。mm
导入日期和时间类。在您的两个格式化程序中,您每月使用mm
,这是错误的。小写MM
表示每小时的分钟。对于月份,您需要使用大写的SimpleDateFormat
。所有格式模式字母均区分大小写。
java.time
类的典型做法是给您一个不正确的结果,并假装一切都很好。这只是那堂课的许多麻烦之一。这也是我建议使用现代Java日期和时间API java.time的众多原因之一。
java.time
。java.time
。.section {
background-color: red;
}
.content {
background-color: blue;
margin: 0 auto;
width: 300px;
}
向Java 6和7(JSR-310的ThreeTen)的反向端口。