将日期时间转换为24小时制

93

我从服务器获取的时间格式为Jul 27, 2011 8:35:29 AM

我想将其转换为yyyy-MM-dd HH:mm:ss格式。

我还希望转换后的时间以24小时制呈现。有人能够提供解决此问题的方案吗?我想得到的输出格式类似于2011-07-27 08:35:29

12个回答

211

H和h之间的区别在于24小时制和12小时制。


1
对于新手:DateFormat format = new SimpleDateFormat("dd.MM.yyyy, HH:mm"); - AlexS

124

试试这个:

String dateStr = "Jul 27, 2011 8:35:29 AM";
DateFormat readFormat = new SimpleDateFormat( "MMM dd, yyyy hh:mm:ss aa");
DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
    date = readFormat.parse(dateStr);
} catch (ParseException e) {
    e.printStackTrace();
}

if (date != null) {
    String formattedDate = writeFormat.format(date);
}

5
我无法使用这段代码将下午2点46分转换为24小时制的14:46。我是不是漏掉了什么? - pnv
@user1930402,您可以通过将读取格式更改为hh:mm a来实现此操作 - 您的输入忽略了秒数(这只是一个猜测)。 - Dhruv Ghulati
1
当我们有 AA 格式时,请确保 HH 是小写,否则应为大写。 - Narsireddy
3
如果你不熟悉日期格式的规律,那么很难分辨它是非常小的。对我来说,只需将“hh”更改为“HH”,问题就解决了! - S_K

107
kk = Hours in 1-24 format
hh= hours in 1-12 format
KK= hours in 0-11 format
HH= hours in 0-23 format

11

试试这个:

Date date=new Date("12/12/11 8:22:09 PM");    
System.out.println("Time in 24Hours ="+new SimpleDateFormat("HH:mm").format(date));

5

4
我将以下面的日期为例,并根据您的要求打印两种不同格式的日期。
String date="01/10/2014 05:54:00 PM";

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa",Locale.getDefault());

try {
            Log.i("",""+new SimpleDateFormat("ddMMyyyyHHmmss",Locale.getDefault()).format(simpleDateFormat.parse(date)));

            Log.i("",""+new SimpleDateFormat("dd/MM/yyyy HH:mm:ss",Locale.getDefault()).format(simpleDateFormat.parse(date)));

        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

如果您还有任何问题,请回复。谢谢。

3
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Date date = new Date();
    Date date2 = new Date("2014/08/06 15:59:48");

    String currentDate = dateFormat.format(date).toString();
    String anyDate = dateFormat.format(date2).toString();

    System.out.println(currentDate);
    System.out.println(anyDate);

2
import java.text.SimpleDateFormat;

import java.util.Date;

public class DateFormatExample {

public static void main(String args[]) {

    // This is how to get today's date in Java
    Date today = new Date();

    //If you print Date, you will get un formatted output
    System.out.println("Today is : " + today);

    //formatting date in Java using SimpleDateFormat
    SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yyyy");
    String date = DATE_FORMAT.format(today);
    System.out.println("Today in dd-MM-yyyy format : " + date);

    //Another Example of formatting Date in Java using SimpleDateFormat
    DATE_FORMAT = new SimpleDateFormat("dd/MM/yy");
    date = DATE_FORMAT.format(today);
    System.out.println("Today in dd/MM/yy pattern : " + date);

    //formatting Date with time information
    DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS");
    date = DATE_FORMAT.format(today);
    System.out.println("Today in dd-MM-yy:HH:mm:SS : " + date);

    //SimpleDateFormat example - Date with timezone information
    DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS Z");
    date = DATE_FORMAT.format(today);
    System.out.println("Today in dd-MM-yy:HH:mm:SSZ : " + date);

} 

}

输出:

今天是: 2012年11月02日星期五16:11:27 IST

今天的日期格式为dd-MM-yyyy: 02-11-2012

今天的日期格式为dd/MM/yy: 02/11/12

今天的日期格式为dd-MM-yy:HH:mm:SS : 02-11-12:16:11:316

今天的日期格式为dd-MM-yy:HH:mm:SSZ : 02-11-12:16:11:316 +0530


2

简而言之:

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("hh:mm aa",Locale.getDefault());
        FAJR = new SimpleDateFormat("HH:mm",Locale.getDefault()).format(simpleDateFormat.parse("8:35 PM");

1

小建议:

尝试使用JodaTime而不是java.util.Date,它更加强大,并且有一个方法toString(""),您可以传递所需的格式,例如toString("yyy-MM-dd HH:mm:ss");

http://joda-time.sourceforge.net/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接