Java - 如果当前时间在17:00之前,则设置datetime17:30

时间:2014-07-15 11:35:20

标签: java spring datetime if-statement time

我正在尝试设置电子邮件类型的发送日期值。

所以我希望人们在17:30之后收到这些邮件,这很酷......

我有

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Calendar cal = Calendar.getInstance();

If( "342856".equals(emailTemplateId))  {
        tmp_disp.setScheduledDate(dateFormat.format(cal.getTime()) + " " + "17:30:00");
        LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());
        } 
else {
        tmp_disp.setScheduledDate(null);
        LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());
        }

现在,如果我在17:30之后发送电子邮件,我就不能在17:30发送电子邮件...所以我需要说..

  If( "342856".equals(emailTemplateId))  AND **thecurrenttimetoday <= 17:00:00** { 
      tmp_disp.setScheduledDate(dateFormat.format(cal.getTime()) + " " + "17:30:00"); 
      LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());
        } 
else {
        tmp_disp.setScheduledDate(null);
        LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());
        }

我真的很喜欢java,而且根本不知道如何做到这一点......任何想法?

真的很感激和帮助,整个早上一直在融化我的小脑!

2 个答案:

答案 0 :(得分:1)

在您遇到问题之前,您的代码中存在许多问题。

If  (emailTemplateId = "342856") // very bad way of checking String equility

使用

If( "342856".equals(emailTemplateId)) 

答案 1 :(得分:1)

我相信你正在努力做到这一点。如果我错过了什么,请详细说明。

    Calendar cal = Calendar.getInstance();
    String  emailTemplateId = ""; //some value
    Calendar  boundaryTime = Calendar.getInstance();
    boundaryTime.set(Calendar.HOUR_OF_DAY,17);
    boundaryTime.set(Calendar.MINUTE,30);
    boundaryTime.set(Calendar.SECOND,0);
    boundaryTime.set(Calendar.MILLISECOND,0);


    if( "342856".equals(emailTemplateId) && cal.getTime().before(boundaryTime.getTime()))  {
        tmp_disp.setScheduledDate(boundaryTime.getTime());
            LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());
     }
    else {
        tmp_disp.setScheduledDate(null);
        LOGGER.debug(">>> ScheduledDate: " + tmp_disp.getScheduledDate());