【问题标题】:not able to catch particular time slot in java无法在 java 中捕获特定的时间段
【发布时间】:2019-05-15 09:17:39
【问题描述】:

我在某个项目中工作,其中需要测试特定时间是否在晚上 8 点到凌晨 12 点之间的时间段。我将日期转换为long 并检查差异。对于所有其他时间段,我得到了积极的输出。但是当我在晚上 8 点到凌晨 12 点进行测试时,我没有得到任何输出。以下是我的代码:

package com.google.pulldata.utils;
import java.text.SimpleDateFormat;
public class Test2 {

    public static void main(String[] args) throws Exception{

        try {
            process1();
            process2();
        }catch(Exception ex) {
            ex.printStackTrace();
        }

    }

    private static void process1() throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_hh_a");


        String dateRange1="2018_11_18_04_PM";
        String dateRange2="2018_11_18_08_PM";


        long dtRange1=sdf.parse(dateRange1).getTime();
        long dtRange2=sdf.parse(dateRange2).getTime();

        String dateTest = "2018_11_18_06_PM";
        long dtTest=sdf.parse(dateTest).getTime();


        if(dtTest>=dtRange1 && dtTest<=dtRange2) {
            System.out.println("yes time is between 04 PM to 08 PM slot");
        }
    }



    private static void process2() throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_hh_a");


        String dateRange1="2018_11_18_08_PM";
        String dateRange2="2018_11_18_12_AM";


        long dtRange1=sdf.parse(dateRange1).getTime();
        long dtRange2=sdf.parse(dateRange2).getTime();

        String dateTest = "2018_11_18_10_PM";
        long dtTest=sdf.parse(dateTest).getTime();


        if(dtTest>=dtRange1 && dtTest<=dtRange2) {
            System.out.println("yes time is between 08 PM to 12 AM slot");
        }
    }
}

输出:

yes time is between 04 PM to 08 PM slot

如您所见,我得到的是 process1() 方法的输出,但不是 'proccess2()` 的输出。谁能帮我看看为什么会这样?

【问题讨论】:

  • 您希望在同一天晚上 8 点之后但在午夜之前发生什么样的日期?午夜是一天的开始,而不是结束。换句话说,晚上 10 点是上午 12 点之后;一天中的其他时刻也是如此。您可能想试试dateRange2="2018_11_19_12_AM"; - 即下一天的午夜。
  • @DawoodibnKareem 回答这个问题,以便我可以 +1
  • 我建议你避免使用SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。

标签: java datetime-comparison


【解决方案1】:

因为 2018_11_18_10_PM 在 2018_11_18_12_AM 之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多