使用SimpleDateFormat将直接日期转换为字符串

时间:2013-07-18 20:10:33

标签: java date dataformat

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

  

“Thu Jul 18 18:56:51 PDT 2013”​​

我正在尝试直接以格式

转换它
  

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

我希望字符串看起来像这样:

  

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

我得到的是:

  

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

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:8)

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

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

来自docs for SimpleDateFormat

  
      
  • hh - 上午/下午(1-12)小时
  •   
  • HH - 白天(0-23)
  •   
  • kk - 一天中的小时(1-24)
  •   
  • KK - 上午/下午(0-11)小时
  •   

(他们以kk / KK的12/24小时来扭转资本化的原因超出了我的范围,但是整个Java日期/时间API都疯了......)

此外,虽然看起来你现在还可以,但值得考虑时区方面。 Date没有任何时区或日历的概念 - 它只是一个瞬间。 SimpleDateFormat 具有关联的时区和日历(和文化),因此请确保它们符合您的目的。

答案 1 :(得分:0)

h 上午/下午(1-12)小时

H 一天中的小时(0-23)

k 一天中的小时(1-24)

K 上午/下午(0-11)小时

使用HH

Class SimpleDateFormat doc

答案 2 :(得分:0)

您必须使用HH而不是hh

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

信函日期或时间组件演示示例

H小时(0-23)0号

k小时(1-24)24号

上午/下午的K小时(0-11)数字0

h上午/下午(1-12)12号小时

您可以详细了解Date here

答案 3 :(得分:0)

package com.stackoverflow.experiments;

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

public class 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()));
}

}