将日期时间字符串格式化为仅限时间

Squ*_*onk 4 java android date-format simpledateformat

我正在从SQLite DB中检索日期时间,格式是......

2011-01-24 02:45:00
Run Code Online (Sandbox Code Playgroud)

在C#中我可以简单地使用DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm")以获取字符串02:45

他们是我可以在Android/Java中这样做的吗?我的Android应用中的代码看起来像这样......

// dateStr below is logging as correctly being yyyy-MM-dd HH:mm:ss format
String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(dateStr); // <-- throws IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)

编辑:感谢doc_180和Konstantin Burov - 给出的例子帮我解决了问题.部分问题是我正在导入java.sql.Date而不是java.util.Date.我改变了一切,现在它对我来说很完美.

unc*_*ons 12

您需要执行以下操作.

try {
   Date date = null;
   date = df.parse("2011-01-24 02:45:00");
   SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
   String shortTimeStr = sdf.format(date);
   System.out.println(shortTimeStr);
} catch (ParseException e) {
   // To change body of catch statement use File | Settings | File Templates.
   e.printStackTrace(); 
}
Run Code Online (Sandbox Code Playgroud)

正如我在评论中提到的,您应该将时间存储为毫秒而不是字符串.否则,除了创建中间人对象Date之外,我没有看到任何其他方式.