最近做了一个微信公众号的活动项目,要求在2018年1月1日到2018年2月28日期间的每个周五18:00到23:59:59开启活动通道,客户在该时间段才能参与活动。所以,在客户请求进去该活动通道的时候,我们需要对时间进行一个判断,看是否在活动时间范围内。
我将活动时间的判定分为了三个部分:日期的判定、星期的判定以及时间的判定,当三个判定都正确时,通道打开。星期的判定我们用Calendar即能实现,现在我们来看下日期和时间的判定。日期和时间都可以采用下面的方式判定,只需要更改格式即可。
demo代码:
package org.fly.justTest;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginTimeString="2018-01-01 00:00:00"; //活动开始的时间 字符串
String endTimeString="2018-02-28 23:59:59"; //活动结束的时间字符串
String nowtimeString =sdf.format(new Date()); //当前时间的时间字符串
Date beginTimeDate = sdf.parse( beginTimeString );
Date endTimeDate = sdf.parse( endTimeString );
Date nowtimeTimeDate = sdf.parse( nowtimeString );
System.out.println("活动开始时间"+beginTimeDate);
System.out.println("活动结束时间"+endTimeDate);
System.out.println("当前时间"+nowtimeTimeDate);
if ( (nowtimeTimeDate.before(endTimeDate))&&((nowtimeTimeDate.after(beginTimeDate))) ){
System.out.println("活动期内");
}else{
System.out.println("活动期外");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}