我有一个日期和时间选择器,我使用这两个构建一个字符串日期。这是一个示例日期和时间字符串。
"11/6/2013 09:23"
现在我需要将它们转换为日期并将它们转换为这种格式“yyyy-MM-dd'T'HH:mm:ss.SSS”。
我的问题是我的logcat中出现了这个错误:
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();
当我使用新的日期并获得当前日期时,它工作正常。我想我的字符串的格式是错误的。但我正在以该格式在edittext上显示它。我想以这种方式保持它。无论如何将此字符串格式转换为日期?有什么想法吗?谢谢!
答案 0 :(得分:0)
这只是因为您的模式与您尝试解析的日期字符串不匹配。您的模式中有3个错误:
MM
表示月份应该是两位数,而日期只有1位数.SSS
,这意味着有几毫秒,但您的日期不是那么精确所以正确的模式应该是:yyyy/M/dd HH:mm:ss
要获得所需格式,请使用所需模式创建新的SimpleDateFormat
对象,并使用parse(Date)方法为其提供Date
之前返回的parse()
对象。
答案 1 :(得分:0)
我想你一下子要做两件事。要将任何String转换为另一种不同格式的String,您需要:
使用包含当前格式的DateFormat解析字符串,这将返回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)
答案 2 :(得分:0)
你试图在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);