Java 将时间转换为24小时格式

Java 将时间转换为24小时格式,java,time,Java,Time,我有一些时间值是字符串格式的(例如12:45am和7:00pm)。 我想知道如何将其转换为24小时格式(例如12:45和19:00) 输出是否应为长格式?我不确定是否正确回答了您的问题,但以下操作是否可行 String dateStr = "12:45 AM"; DateFormat inputFormat = new SimpleDateFormat( "hh:mm aa" ); DateFormat outputFormat = new SimpleDateFormat( "HH:mm" )

我有一些时间值是
字符串
格式的(例如
12:45am
7:00pm
)。 我想知道如何将其转换为24小时格式(例如
12:45
19:00


输出是否应为长格式?

我不确定是否正确回答了您的问题,但以下操作是否可行

String dateStr = "12:45 AM";
DateFormat inputFormat = new SimpleDateFormat( "hh:mm aa" );
DateFormat outputFormat = new SimpleDateFormat( "HH:mm" );
Date date = null;
try{
    date = inputFormat.parse( dateStr );
}
catch ( ParseException e ){
   e.printStackTrace();
}
if( date != null ){
    String formattedDate = outputFormat.format( date );
}
Date date=new Date("01/01/14 " + myTimeString);    // Example: 8:22:09 PM 
System.out.println("Formattet ="+new SimpleDateFormat("HH:mm").format(date));

我不确定我是否正确地回答了你的问题,但是下面的问题不应该解决吗

Date date=new Date("01/01/14 " + myTimeString);    // Example: 8:22:09 PM 
System.out.println("Formattet ="+new SimpleDateFormat("HH:mm").format(date));
请看一看。 它提供了如何来回转换的示例

这是12小时到24小时的转换

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

String input = "2014-12-20 10:22:12 PM";
//Format of the date defined in the input String
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");
//Desired format: 24 hour format: Change the pattern as per the need
DateFormat outputformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
String output = null;
try{
   //Converting the input String to Date
   date= df.parse(input);
   //Changing the format of date and storing it in String
   output = outputformat.format(date);
   //Displaying the date
   System.out.println(output);
} catch (ParseException pe) {
   pe.printStackTrace();
}
请看一看。 它提供了如何来回转换的示例

这是12小时到24小时的转换

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

String input = "2014-12-20 10:22:12 PM";
//Format of the date defined in the input String
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");
//Desired format: 24 hour format: Change the pattern as per the need
DateFormat outputformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
String output = null;
try{
   //Converting the input String to Date
   date= df.parse(input);
   //Changing the format of date and storing it in String
   output = outputformat.format(date);
   //Displaying the date
   System.out.println(output);
} catch (ParseException pe) {
   pe.printStackTrace();
}


你能发布你到目前为止所做的事情吗?你想让输出是长的吗?或者你是在问最好的格式吗?提醒一下:
12:45 AM
00:45
而不是
12:45
@Joiner是的,我需要输出长格式为什么你要将其中一个答案的代码编辑到问题中?您还没有添加任何关于您为什么这样做的内容-因此看起来这是真正问题的一部分,这有点奇怪。您可以发布您到目前为止所做的事情吗。您是否希望输出为
?或者你是在问最好的格式吗?提醒一下:
12:45 AM
00:45
而不是
12:45
@Joiner是的,我需要输出长格式为什么你要将其中一个答案的代码编辑到问题中?您没有添加任何关于您为什么这样做的内容-因此看起来这是真正问题的一部分,这有点奇怪。我建议您从
writeFormat
中删除
aa
。。。例如看“19:00pm”是很奇怪的。(我还建议删除异常处理-这几乎从来都不是正确的方法。)没错,谢谢。对于异常处理,这是我的签名+有一些异常处理很好。:)但这并不是真正的异常处理——它几乎只是忽略它。最好是显示一个方法,声明它可能抛出
ParseException
。在我看来,打印堆栈跟踪并继续执行几乎从来都不是正确的方法,尤其是因为这很可能被重构成一个可重用的方法,有时候你想忽略异常,有时候你不同意。我只是带路。很明显,如果出现这种情况,他应该处理异常,我想这就是为什么我们会有异常。“我只是展示了一种方式”-你展示了一种方式,这几乎是不合适的。这就是为什么我建议应该改变的原因。(见鬼,即使只是使用记录器而不是调用
e.printStackTrace()
,也会稍微好一点,尽管不会太多……)我诅咒Eclipse和其他IDE太容易生成这种try/catch块的事实——这会让开发人员懒于思考他们在异常情况下真正想要做什么。我建议您从
writeFormat
中删除
aa
。。。例如看“19:00pm”是很奇怪的。(我还建议删除异常处理-这几乎从来都不是正确的方法。)没错,谢谢。对于异常处理,这是我的签名+有一些异常处理很好。:)但这并不是真正的异常处理——它几乎只是忽略它。最好是显示一个方法,声明它可能抛出
ParseException
。在我看来,打印堆栈跟踪并继续执行几乎从来都不是正确的方法,尤其是因为这很可能被重构成一个可重用的方法,有时候你想忽略异常,有时候你不同意。我只是带路。很明显,如果出现这种情况,他应该处理异常,我想这就是为什么我们会有异常。“我只是展示了一种方式”-你展示了一种方式,这几乎是不合适的。这就是为什么我建议应该改变的原因。(见鬼,即使只是使用记录器而不是调用
e.printStackTrace()
,也会稍微好一点,尽管不会太多……)我诅咒Eclipse和其他IDE太容易生成这种try/catch块,这会让开发人员懒于思考他们在异常情况下真正想要做什么。使用不推荐的
Date(String)
构造函数绝不是最好的方法,IMO.您是否有任何想法使输出采用长格式?IMO,使用不推荐使用的
Date(String)
构造函数绝不是最好的方法。您是否有任何想法使输出采用长格式?这是一种非常非传统的日期模式-我建议改用yyy-MM-dd。(很少有国家把月份放在第一位,而那些不把月份放在第一位的国家通常使用-作为分隔符。)这是完全正确的@Jon,当然,进一步修改格式是可能的。谢谢你的评论。当然,开发人员可以自己处理——我建议编辑你的帖子,使用更标准的格式作为默认格式,因为用户很可能会不假思索地复制和粘贴:(不要以为我这么说只是因为我的答案先被接受,然后又被拒绝。转换为long不是你原来问题的一部分。如果你编辑它,不接受上一个问题是不好的。只是说谢谢你@JonSkeet&Murtaza。Denise如果你发布下一个问题,可能对社区最有益这个问题是一个单独的问题,因此人们可以在不查看此答案的注释的情况下找到它。这是一个非常非传统的日期模式-我建议使用yyyy-MM-dd来代替。(很少有国家将月份放在第一位,而那些通常不使用的国家-作为分隔符。)这是完全正确的@Jon,当然对格式的任何进一步修改都是可能的。谢谢你的评论。当然开发人员也可以修改它