Java 从日期和时间选择器转换日期字符串生成

Java 从日期和时间选择器转换日期字符串生成,java,android,datetime,datetime-format,Java,Android,Datetime,Datetime Format,我有一个日期和时间选择器,我用这两个来构建一个字符串日期。下面是一个日期和时间字符串示例 "11/6/2013 09:23" 现在我需要将它们转换为日期,并将它们转换为yyyy-MM-dd'HH:MM:ss.SSS格式 我的问题是我的日志中出现了以下错误: 11-06 21:23:53.060: E/Error(26255): Unparseable date: "11/6/2013 09:23" (at offset 2) 我使用这段代码将字符串转换为日期,并将日期转换为格式化字符串 Da

我有一个日期和时间选择器,我用这两个来构建一个字符串日期。下面是一个日期和时间字符串示例

"11/6/2013 09:23"
现在我需要将它们转换为日期,并将它们转换为yyyy-MM-dd'HH:MM:ss.SSS格式

我的问题是我的日志中出现了以下错误:

11-06 21:23:53.060: E/Error(26255): Unparseable date: "11/6/2013 09:23" (at offset 2)
我使用这段代码将字符串转换为日期,并将日期转换为格式化字符串

Date d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault()).parse(etaToDeliverArrivedAtShipper.getText().toString());
ETAtoNextStop = d.toString();

当我使用新日期并获取当前日期时,它工作正常。我猜我的字符串格式是错误的。但我用这种格式在编辑文本上显示它。我想保持这种状态。是否仍有将此字符串格式转换为日期的方法?有什么想法吗,伙计们?谢谢

这只是因为您的模式与您试图解析的日期字符串不匹配。您的模式中有3个错误:

您使用MM,这意味着月份应该是两位数,而在日期中只有一位数 您使用.SSS,这意味着有毫秒,但您的日期没有那么精确 您使用了错误的分隔符 所以正确的模式应该是:yyyy/M/dd HH:mm:ss


要获得所需的格式,请使用所需的模式创建一个新的SimpleDataFormat对象,并使用之前由parse返回的Date对象的方法。

我认为您正在尝试同时执行两件事情。要将任何字符串转换为其他格式的字符串,您需要:

使用包含当前格式的DateFormat解析字符串,这将返回一个日期;然后 获取新获取的日期,并将其格式化为所需的日期格式

SimpleDateFormat formatOne = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = formatOne.parse(etaToDeliverArrivedAtShipper.getText().toString());
SimpleDateFormat formatTwo = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.getDefault());
String result = formatTwo.format(date)

您正试图在yyyy-MM-dd'T'HH:MM:ss.SSS中进行分析,但事实并非如此。它可能是yyyy/M/dd HH:mm:ss

您可能想要的是:

Date d = new SimpleDateFormat("yyyy/M/dd HH:mm:ss", Locale.getDefault()).parse(etaToDeliverArrivedAtShipper.getText().toString());
ETAtoNextStop = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault()).format(d);