当前位置: 首页 > 面试题库 >

时间差-从午夜之前到午夜之后(无日期)

公孙锋
2023-03-14
问题内容

我正在努力计算午夜后的时间:

String time = "15:00-18:05"; //Calculating OK
    //String time = "22:00-01:05"; //Not calculating properly
    String[] parts = time.split("-");

    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
    Date date1 = null;
    Date date2 = null;
    Date dateMid = null;


    String dateInString = "24:00";
    try {
        dateMid = format.parse(dateInString);
    } catch (ParseException e1) {
        e1.printStackTrace();
    }

    try {
        date1 = format.parse(parts[0]);
        date2 = format.parse(parts[1]);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    long difference = date2.getTime() - date1.getTime();


    if (date2.getTime()<date1.getTime()) //in case beyond midnight calculation
    {
        difference = dateMid.getTime()-difference;
    }



    int minutes = (int) ((difference / (1000*60)) % 60);
    int hours   = (int) ((difference / (1000*60*60)) % 24);

    String tot = String.format("%02d:%02d", hours,minutes);
    System.out.println("dif2: "+tot);

问题答案:

如果您不关心夏令时的变化,并且假设世界是理想的(不是理想的),则可以从24小时中减去结束与开始之间的持续时间(end以开始与start结束为间隔):

String time = "22:00-01:05";
String[] parts = time.split("-");

LocalTime start = LocalTime.parse(parts[0]);
LocalTime end = LocalTime.parse(parts[1]);
if (start.isBefore(end)) { // normal case
    System.out.println(Duration.between(start, end));
} else { // 24 - duration between end and start, note how end and start switched places
    System.out.println(Duration.ofHours(24).minus(Duration.between(end, start)));
}


 类似资料:
  • 问题内容: 我正在创建一个Android小部件,希望在每晚的午夜更新。我正在使用,我需要找出从当前时间到午夜还剩下多少毫秒。这是我的代码: 如何计算到午夜还有几毫秒? 先感谢您。 问题答案: 使用日历来计算它:

  • 我使用以下内容以更可读的格式获取当前日期/时间: 这很好地工作,并输出如下内容:<代码>[02-06-2020]-[22-59] 但是,午夜之后,时间格式从HH:MM:SS:MS更改为H:MM:SS:MS。这会弄乱格式,因为它在时间中包含冒号,因为字符被移了一位。这会导致在午夜之后创建的日志文件中出现无用的日期/时间信息。 有没有什么方法可以让时间总是以两位数的格式表示?

  • 问题内容: 我需要创建两个日期对象。如果当前日期和时间是2012年3月9日上午11:30,则 日期对象d1应该是 2012年3月9日上午12:00 日期对象d2应该包含当前日期本身 日期不会输入,它是系统日期。 更新 : 给出当前日期和时间 问题答案: 应该是IST 2012年3月9日00:00:00

  • 问题内容: 我试图让我对datetime模块有所了解。我知道现在是一个纪元,一个事件的最后发生时间(一个纪元)。我需要做的是弄清楚该事件是否在昨天的午夜和午夜之间发生。 24小时前的电话是-86400,但我如何将其四舍五入到午夜。我真的很难找到一种方法来获取和获取日期时间的时间戳,或者然后操纵日期时间来设置时间。 问题答案: 在半夜 生成最后一个午夜很容易: 结合了今天的日期(您可以使用,也可以选

  • 问题内容: 我正在使用Node,并且需要使此功能每天在午夜运行,这可能吗? 问题答案: 我相信节点计划包将满足您的需求。通常,您希望所谓的cron安排和运行服务器任务。 使用 节点计划 :

  • 问题内容: 我需要一个函数,该函数可以让我从午夜起经过多少秒。我当前正在使用,但是它给了我UNIX时间戳。 如果我也能获得毫秒数,那对我来说将是一个额外的奖励。 问题答案: 如果您使用的是Java> = 8,这很容易做到: 如果您使用的是Java 7或更低版​​本,则必须通过Calendar从午夜开始获取日期,然后减去。