2013-07-18 67 views
0

我知道这可能是一个愚蠢的问题,但我使用SimpleDateFormat将日期转换为字符串最困难。我有一个本地日期使用SimpleDateFormat将直接日期转换为字符串

“周四7月18日18时56分51秒PDT 2013”​​

,我试图把它直接在格式

“YYYY-MM转换-dd'T'hh:MM:SS”。

我希望字符串是什么样子是这样的:

“2013-07-18T18:56:51”

什么我得到的是:

“2013-07-18T06:56:51”

任何帮助,将不胜感激。

+8

代替'hh'的使用'HH'。 'h'是上午/下午的小时,'H'是一天中的小时。 –

+0

@RameshK:不,那仍然是'hh'而不是'HH'。 –

回答

8

您正在使用hh,这是12小时制。你想用HH代替:

"yyyy-MM-dd'T'HH:mm:ss" 

docs for SimpleDateFormat

  • HH - 在凌晨小时/时(1-12)
  • HH - 一天中的小时(0-23)
  • KK - 一天中的小时(1-24)
  • KK - 小时的AM/PM(0-11)

(相当为什么他们扭转了资本在12/24小时条款kk/KK超越我,但后来整个Java的日期/时间API是疯了...)

而且,虽然看起来你现在还好,但值得考虑时区方面。 A Date没有任何时区或日历的概念 - 这只是时间。 SimpleDateFormat确实有一个相关的时区和日历(和文化),所以要确保它们是正确的为您的目的。

+1

欲了解更多信息,请查看[日期和时间模式](http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) –

+0

是的 - 我正式推迟...谢谢! – MweyaMutsvene

+0

@RubensMariuzzo:是的,它只是链接到那个 - 或者说JDK 7的版本。你有没有注意到kk/KK的奇怪之处? (我现在在答案中指出。) –

0

您必须使用HH而不是hh

yyyy-MM-dd'T'HH:mm:ss 

字母日期或时间组件演示例子

h小时在(0-23)数0

ķ每小时(1-24)24号

K小时am/pm(0-11)N在AM/PM(1-12)12号

赭0

h小时你可以阅读更多关于Datehere

0

package com.stackoverflow.experiments;

import java.text.SimpleDateFormat; import java.util.Calendar;

公共类SimpleDateFormatExperiment {

/** 
* 
*/ 
public SimpleDateFormatExperiment() { 
    // TODO Auto-generated constructor stub 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(Calendar.getInstance().getTime())); 
} 

}