Java:如何以字符串形式输入时间并计算差异
我想制作一个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
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”)是的,对不起,我错了。但是我认为这个计算是错误的?我进入12:56第二次是1:03答案应该是7分钟对吗?但是输出给了我713分零秒所以。。。我在用。。嗯。。。在格式中。。。这使它成为24小时格式。。。使用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”)是的,对不起,我错了。但是我认为这个计算是错误的?我进入12:56第二次是1:03答案应该是7分钟对吗?但是输出给了我713分零秒所以。。。我在用。。嗯。。。在格式中。。。这使它成为24小时格式。。。使用DateFormat sdf=newsimpledateformat(“hh:mm aa”)
用户输入如下:12:56 pm
和1:06 pm
。。详细说明HH
用于24小时格式,而HH
用于12小时格式。。肯定会有用的!。。。我还对我提供的代码进行了更改。。你可以直接复制并运行它……谢谢@Prateek:)你有一个如此美丽的灵魂