日期为UTC格式Java

Mad*_*ech 15 java datetime date

我有这样的字符串2013-10-22T01:37:56.我需要将此字符串更改为UTC日期格式,如下所示MM/dd/yyyy KK:mm:ss a.我尝试了一些代码,但它没有返回UTC日期时间.

我的代码是

        String[] time = itsAlarmDttm.split("T");
        String aFormatDate = time[0]+ " "+time[1];
        String aRevisedDate = null;
        try {
            final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            final Date dateObj = sdf.parse(aFormatDate);
            aRevisedDate = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a").format(dateObj);
            System.out.println(aRevisedDate);
        } catch (ParseException e) {
            itsLogger.error("Error occured in Parsing the Data Time Object:  " +e.getMessage());
        } catch (Exception e) {
            itsLogger.error("Error occured in Data Time Objecct:  " +e.getMessage());
        }
Run Code Online (Sandbox Code Playgroud)

我得到的输出是MM/dd/yyyy KK:mm:ss a格式.但不是UTC时间格式.如何解决这个问题?

Bud*_*dha 21

试试这个...为我工作并打印出了10/22/2013 01:37:56 AM当然这只是你的代码,只需要很少的修改.

final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));   // This line converts the given date into UTC time zone
final java.util.Date dateObj = sdf.parse("2013-10-22T01:37:56");

aRevisedDate = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a").format(dateObj);
System.out.println(aRevisedDate);
Run Code Online (Sandbox Code Playgroud)

  • 这个例子很混乱。“sdf.setTimeZone(...)”位于“sdf.parse(...)”之后。“format(dateObj)”使用新的 SimpleDateFormat。所以“setTimeZone”对这里没有任何影响。但这是正确的提示。 (2认同)

ben*_*n.d 11

尝试使用Zz时区标志格式化日期:

new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a Z").format(dateObj);
Run Code Online (Sandbox Code Playgroud)


sta*_*tan 5

SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
// or SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd/yyyy KK:mm:ss a Z" );
sdf.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
System.out.println( sdf.format( new Date() ) );
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 5

什么时区?

在您的问题中,您没有提到时区。该输入字符串暗示什么时区?您要输出哪个时区?而且,UTC是一个时区(或取决于您的思维方式而定的时区),而不是字符串格式

ISO 8601

您的输入字符串采用ISO 8601格式,但缺少与UTC偏移量

乔达时代

这是Joda-Time 2.3中的一些示例代码,向您展示如何处理时区。Joda-Time具有内置的默认格式化程序,用于解析和生成日期时间值的String表示形式。

String input = "2013-10-22T01:37:56";
DateTime dateTimeUtc = new DateTime( input, DateTimeZone.UTC );
DateTime dateTimeMontréal = dateTimeUtc.withZone( DateTimeZone.forID( "America/Montreal" );
String output = dateTimeMontréal.toString();
Run Code Online (Sandbox Code Playgroud)

至于生成其他格式的字符串表示形式,请在StackOverflow中搜索“ Joda格式”。