开发者

Format a datetime string to time only

开发者 https://www.devze.com 2023-02-06 02:51 出处:网络
I\'m retrieving a datetime from a SQLite DB which comes out in the format... 2011-01-24 02:45:00 In C# I can simply use DateTime.Parse(\"2011-01-24 02:45:00\").ToString(\"HH:mm\") in order to get t

I'm retrieving a datetime from a SQLite DB which comes out in the format...

2011-01-24 02:45:00

In C# I can simply use DateTime.Parse("2011-01-24 02:45:00").ToString("HH:mm") in order to get the string 02:45

Is their a way I can I do this in Android/Java? My code in my Android app loo开发者_如何学Goks like this...

// 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

EDIT: Thanks to both doc_180 and Konstantin Burov - the examples given have helped me sort out the problem. Part of the issue was that I was importing java.sql.Date instead of java.util.Date. I've changed things around and it's working perfectly for me now.


You need to do the following.

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

As I mentioned in comment, you should store the time as milliseconds instead of string. Otherwise, I do not see any other way than creating a middleman object Date.


SimpleDateFormat.format expects Date or Calendar as argument while you're passing a String. Convert the String into Date first.

String dateStr = cursor.getString(cursor.getColumnIndex("start_time"));
SimpleDateFormat toFullDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date fullDate = toFullDate.parse(dateStr);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String shortTimeStr = sdf.format(fullDate); 

And yeah, I'd rather stored date as long in the database, so getting a Date object then would be more trivial:

Long dateMilliseconds = cursor.getLong(cursor.getColumnIndex("start_time"));
Date fullDate = new Date(dateMilliseconds);
0

精彩评论

暂无评论...
验证码 换一张
取 消