如何检查一年中的月份是否为一月

时间:2018-12-29 07:25:50

标签: java

如何检查一年中的月份是否为一月,它将查询数据库中是否有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),但它仍然对我不起作用,希望你们能帮助我

3 个答案:

答案 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.timeLocalDate获得月份。喜欢,

if (LocalDate.now().getMonthValue() == 1)

(由@Andreascomments中指出)使用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)

tl; dr

考虑时区。

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/MontrealAfrica/CasablancaPacific/Auckland。切勿使用2-4个字母的缩写,例如ESTIST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。

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 ) 
    ) 
;