2014-02-19 52 views
0

我想将字符串转换为日期时间格式。我的字符串是23 Feb 2014 14:00:48。我想以2011-04-08T12:29:00.000Z格式发送到服务器。Android:将字符串转换为日期时间格式分析错误

我做如下

String str = departetforget.getText().toString(); 
     System.out.println("printing date"+str); 
     String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
     try { 
      Date date = new SimpleDateFormat(TIMEZONE_DATE_TIME_FORMAT, Locale.US).parse(str); 
      System.out.println("printing parsed date "+date); 
     } catch (ParseException e) { 
      System.out.println("printing date Exception ==> "+e.toString()); 
      e.printStackTrace(); 
     } 

但我正在逐渐解析异常。

+0

看起来像的[本]一个转贴(http://stackoverflow.com/questions/2580925/simpledateformat-parsing -date-with-z-literal) – cosmincalistru

+0

你有没有检查尊重图案格式? [Java SimpleDateFormat](http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) –

回答

9

试试这个测试工作演示

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     System.out.println("Converted Date : " + convertDate("23 Feb 2014 14:00:48")); 
    } 

    private String convertDate(String date) { 
     try { 
      SimpleDateFormat format = new SimpleDateFormat("dd MMM yyyy hh:mm:ss"); 
      Date d = format.parse(date); 
      SimpleDateFormat serverFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
      return serverFormat.format(d); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 

} 

输出:

转换日期:2014-02-23T14:00:48.000Z

0
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
      String newFormat = formatter.format(testDate); 

String date = "2011-11-12 16:05:06"; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd HH:MM:SS"); 
     Date testDate = null; 
     try { 
      testDate = sdf.parse(date); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     String newFormat = formatter.format(testDate); 
     System.out.println(".....Date..."+newFormat); 
2

您需要2个SimpleDateFormats来转换日期字符串。例如:

String str = departetforget.getText().toString(); 
    String MY_FORMAT = "dd MMM yyyy HH:mm:ss"; 
    String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
    try { 
     Date date = new SimpleDateFormat(MY_FORMAT, Locale.US).parse(str); 

     String timezoneString = new SimpleDateFormat(MY_FORMAT, Locale.US).format(date); 
    } catch (ParseException e) { 
     System.out.println("printing date Exception ==> "+e.toString()); 
     e.printStackTrace(); 

    } 
+0

嗨第二次转换时,即; String timezoneString,我认为我们需要用TIMEZONE_DATE_TIME_FORMAT取代它..但它是发布的,但是作为2014-02-19T14:26:58GMT + 05:30,但我不需要GMT,我希望它作为2011-04- 08T12:29:00.000Z – teekib

+0

是的,我很抱歉。您需要将其替换为TIMEZONE_DATE_FORMAT。 –

+0

如果您不希望GMT使用'Z'而不是'z' –

0

你必须用正确的格式解析给定的日期。

String TIMEZONE_DATE_TIME_PARSE="dd MMM yyyy HH:mm:ss"; 

然后像sdf.format用的SimpleDateFormat格式化(日期)

String TIMEZONE_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssz"; 
相关问题