Java:如何以字符串形式输入时间并计算差异

Java:如何以字符串形式输入时间并计算差异,java,time,Java,Time,我想制作一个java程序,用户在其中输入开始时间和结束时间。从那里我想让程序计算时间之间的差异? 这应该是输出 Enter first time: 12:56 pm Enter second time: 1:03 pm time difference is 7 minutes 我只知道如何计算和计算分钟数的公式 对不起,我不太清楚您需要什么。如果要将用户输入的时间转换为时间戳,然后计算差值,这将有助于: String startTime = "08/16/2011 12:56:00"; Str

我想制作一个java程序,用户在其中输入开始时间和结束时间。从那里我想让程序计算时间之间的差异? 这应该是输出

Enter first time: 12:56 pm
Enter second time: 1:03 pm
time difference is 7 minutes

我只知道如何计算和计算分钟数的公式

对不起,我不太清楚您需要什么。如果要将用户输入的时间转换为时间戳,然后计算差值,这将有助于:

String startTime = "08/16/2011 12:56:00";
String endTime = "08/16/2011 13:56:00";

// Customize your own date format
SimpleDateFormat format = new SimpleDateFormat("MM/DD/YYYY hh:mm:ss");
Calendar c = Calendar.getInstance();

c.setTime(format.parse(startTime));
long startMillis = c.getTimeInMillis();

c.setTime(format.parse(endTime));
long endMillis = c.getTimeInMillis();

System.out.println("time difference is " + ((endMillis - startMillis)/1000) + " seconds");
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Time {
public static void main(String args[]) throws ParseException{
Scanner input = new Scanner(System.in);
 System.out.print("Enter first time (hh:mm aa): ");
 String time = input.nextLine();
 System.out.println();
 System.out.print("Enter second time (hh:mm aa): ");
 String time2 = input.nextLine();
 System.out.println();
 DateFormat sdf = new SimpleDateFormat("hh:mm aa");
 Date d1 = sdf.parse(time);
 Date d2 = sdf.parse(time2);

 System.out.println("Time: " + sdf.format(d1));
 System.out.println("Time: " + sdf.format(d2));
    if(d1.after(d2)){
     long diffMs = d1.getTime() - d2.getTime();
     long diffSec = diffMs / 1000;
     long min = diffSec / 60;
     long sec = diffSec % 60;
     System.out.println("The difference is "+min+" minutes and "+sec+" seconds.");
    }

    if(d1.before(d2)){
     long diffMs = d2.getTime() - d1.getTime();
     long diffSec = diffMs / 1000;
     long min = diffSec / 60;
     long sec = diffSec % 60;
     System.out.println("The difference is "+min+" minutes and "+sec+" seconds.");
    }

    if(d1.equals(d2)){
     System.out.println("The difference is 0 minutes and 0 seconds.");
    }

 }
}
唯一的限制是你必须限制你的用户以给定的格式输入时间,允许用户以任何格式输入时间都会让你难以处理


希望有帮助:)

对不起,我不太清楚您需要什么。如果要将用户输入的时间转换为时间戳,然后计算差值,这将有助于:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Time {
public static void main(String args[]) throws ParseException{
Scanner input = new Scanner(System.in);
 System.out.print("Enter first time (hh:mm aa): ");
 String time = input.nextLine();
 System.out.println();
 System.out.print("Enter second time (hh:mm aa): ");
 String time2 = input.nextLine();
 System.out.println();
 DateFormat sdf = new SimpleDateFormat("hh:mm aa");
 Date d1 = sdf.parse(time);
 Date d2 = sdf.parse(time2);

 System.out.println("Time: " + sdf.format(d1));
 System.out.println("Time: " + sdf.format(d2));
    if(d1.after(d2)){
     long diffMs = d1.getTime() - d2.getTime();
     long diffSec = diffMs / 1000;
     long min = diffSec / 60;
     long sec = diffSec % 60;
     System.out.println("The difference is "+min+" minutes and "+sec+" seconds.");
    }

    if(d1.before(d2)){
     long diffMs = d2.getTime() - d1.getTime();
     long diffSec = diffMs / 1000;
     long min = diffSec / 60;
     long sec = diffSec % 60;
     System.out.println("The difference is "+min+" minutes and "+sec+" seconds.");
    }

    if(d1.equals(d2)){
     System.out.println("The difference is 0 minutes and 0 seconds.");
    }

 }
}
唯一的限制是你必须限制你的用户以给定的格式输入时间,允许用户以任何格式输入时间都会让你难以处理


我希望它有帮助:)

使用正则表达式以HH:MM:SS格式接受用户的时间

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetTime {

public static void main(String[] args) {

    String ip="";
    String pattern="^([01]?\\d|2[0-3]):([0-5]?\\d):([0-5]?\\d)$";

    Scanner sc=new Scanner(System.in);
    System.out.println("Enter the time");
    ip=sc.nextLine();
    Pattern r = Pattern.compile(pattern);
     Matcher m = r.matcher(ip);
     if(m.find())
     {
         System.out.println("Time"+m.group(0));
         System.out.println("hh "+m.group(1));
         System.out.println("mm "+m.group(2));
         System.out.println("ss "+m.group(3));
     }
     else
     {
         System.out.println("NO MATCH! format mismatch");
     }
 }
}

使用正则表达式以HH:MM:SS格式接受用户的时间

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetTime {

public static void main(String[] args) {

    String ip="";
    String pattern="^([01]?\\d|2[0-3]):([0-5]?\\d):([0-5]?\\d)$";

    Scanner sc=new Scanner(System.in);
    System.out.println("Enter the time");
    ip=sc.nextLine();
    Pattern r = Pattern.compile(pattern);
     Matcher m = r.matcher(ip);
     if(m.find())
     {
         System.out.println("Time"+m.group(0));
         System.out.println("hh "+m.group(1));
         System.out.println("mm "+m.group(2));
         System.out.println("ss "+m.group(3));
     }
     else
     {
         System.out.println("NO MATCH! format mismatch");
     }
 }
}

通过Java 8时间API或JodaTime(提示本地时间)执行搜索通过Java 8时间API或JodaTime(提示本地时间)执行搜索我尝试运行给定的程序。但有一个问题。这里是线程“main”java.text.ParseException中的错误异常:不可解析的日期:“12:00”在java.text.DateFormat.parse(DateFormat.java:366)是的,这就是我说的。。。用户必须按照我们要求的格式输入日期。。目前的格式是HH:mm:ss。。。如果您希望用户在HH:mm中输入。。。继续,并在代码
DateFormat sdf=newsimpledateformat(“HH:mm:ss”)中更改它到这个
DateFormat sdf=newsimpledateformat(“HH:mm”)DateFormat sdf=newsimpledateformat(“hh:mm aa”)
用户输入如下:
12:56 pm
1:06 pm
。。详细说明
HH
用于24小时格式,而
HH
用于12小时格式。。肯定会有用的!。。。我还对我提供的代码进行了更改。。你可以直接复制并运行它..谢谢@Prateek:)你有这么一个漂亮的灵魂来运行你给定的程序。但有一个问题。这里是线程“main”java.text.ParseException中的错误异常:不可解析的日期:“12:00”在java.text.DateFormat.parse(DateFormat.java:366)是的,这就是我说的。。。用户必须按照我们要求的格式输入日期。。目前的格式是HH:mm:ss。。。如果您希望用户在HH:mm中输入。。。继续,并在代码
DateFormat sdf=newsimpledateformat(“HH:mm:ss”)中更改它到这个
DateFormat sdf=newsimpledateformat(“HH:mm”)DateFormat sdf=newsimpledateformat(“hh:mm aa”)
用户输入如下:
12:56 pm
1:06 pm
。。详细说明
HH
用于24小时格式,而
HH
用于12小时格式。。肯定会有用的!。。。我还对我提供的代码进行了更改。。你可以直接复制并运行它……谢谢@Prateek:)你有一个如此美丽的灵魂