如何检查一年中的月份是否为一月,它将查询数据库中是否有December(12)和year / Lastyear的数据库,如果没有,则会插入到该表中
示例在这里,但是不起作用
SimpleDateFormat king = new SimpleDateFormat("MM");
String M = (king.format(new java.util.Date()));
String L = M;
if (L.equals(1)) {
// then it will check the database table if there is none
// if the rs.next is false then it will count and insert the last
// month and last year patient
} else() {
// if it is not Month of January then it will insert the last month this work
// for me but the other is not
}
我只需要知道如何检查一月的月份,我已经将我的月份设置为一月(1),但它仍然对我不起作用,希望你们能帮助我
答案 0 :(得分:5)
您有一个String
。使用
if (M.equals("01"))
或,您可以将String
解析回int
之类的
if (Integer.parseInt(M) == 1)
或您可以使用Calendar
API
if (Calendar.getInstance().get(Calendar.MONTH) == Calendar.JANUARY)
但是我希望Java 8+ java.time
类LocalDate
获得月份。喜欢,
if (LocalDate.now().getMonthValue() == 1)
或(由@Andreas在comments中指出)使用Month
枚举。
if (LocalDate.now().getMonth() == Month.JANUARY)
答案 1 :(得分:4)
首先,不再使用SimpleDateFormat
,它已经过时了。使用Java-8的LocalDate
代替。
假设您要获取当前日期,请使用:
LocalDate now = LocalDate.now();
now.getMonth().getValue(); // this will return an integer value of the month
答案 2 :(得分:1)
考虑时区。
boolean isCurrentDateInJanuary =
(
LocalDate // Represent the date-only, without time-of-day and without time zone.
.now( // Capture the current date.
ZoneId.of( "Africa/Tunis" ) // Specify wall-clock time used by the people of a specific region, a time zone.
) // Returns a `LocalDate` object.
.getMonth() // Extracts one of the twelve `Month` enum objects from the date. Returns a `Month` object.
.equals( Month.JANUARY ) // Compares our `Month` object to a specific `Month` object, the one for January is our target. Returns a `boolean`.
)
;
其他两个答案是正确的,但忽略了时区这一关键问题。
时区对于确定日期至关重要。在任何给定时刻,日期都会在全球范围内变化。例如,Paris France午夜之后的几分钟是新的一天,而Montréal Québec仍然是“昨天”。
如果未指定时区,则JVM隐式应用其当前的默认时区。该默认值可能在运行时(!)期间change at any moment,因此您的结果可能会有所不同。最好将您的期望/期望时区明确指定为参数。
以Continent/Region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用2-4个字母的缩写,例如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
如果要使用JVM的当前默认时区,请提出要求并作为参数传递。如果省略,代码将变得难以理解,因为我们不确定您是否打算使用默认值,还是像许多程序员一样不知道该问题。
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
在每个所需的/预期的时区中锁定适当的日期,按照建议的其他答案进行操作。使用Month
枚举很容易。
boolean isCurrentDateInJanuary =
(
today
.getMonth()
.equals( Month.JANUARY )
)
;