如何将日期字符串"2010-07-14 09:00:02"
格式化为"9:00"
?
DateTimeFormatter
将日期字符串和真实的LocalDateTime
对象相互转换。从LocalDateTime
开始,你可以根据DateTimeFormatter的Javadoc中定义的各种模式轻松应用格式化。String originalString = "2010-07-14 09:00:02";
LocalDateTime dateTime = LocalDateTime.parse(originalString, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String newString = DateTimeFormatter.ofPattern("H:mm").format(dateTime); // 9:00
如果你还没有使用Java 8或更新的版本,请使用SimpleDateFormat
将日期字符串转换为真正的Date
对象。有了一个Date
对象作为起点,你可以根据在 SimpleDateFormat
的Javadoc中定义的各种模式轻松应用格式化。
String originalString = "2010-07-14 09:00:02";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(originalString);
String newString = new SimpleDateFormat("H:mm").format(date); // 9:00
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2010-07-14 09:00:02");
String time = new SimpleDateFormat("H:mm").format(date);
http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
在问题被提出时,其他答案是好的。然而时间流逝,Date
和SimpleDateFormat
这些类已经被更新更好的类取代并且已经不再使用。所以在2017年,请使用java.time
包中的类来完成相关任务:
String timeString = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))
.format(DateTimeFormatter.ofPattern("H:mm"));
9:00
。SimpleDateFormat.parse()
将其转换为一个对象,如BalusC的示例所示。 - Andrzej Doylea
),您更喜欢使用H
而不是h
,以避免在上午9:00和下午9:00之间产生歧义。 - BalusCDate date = new Date();
date.setYear(2010);
date.setMonth(07);
date.setDate(14)
date.setHours(9);
date.setMinutes(0);
date.setSeconds(0);
String time = new SimpleDateFormat("HH:mm:ss").format(date);
Date
的月份是从 0 开始计数的,所以你得到的是八月,而不是七月。你可能会认为,由于你只输出时间,这并不重要,但它肯定会让一些人感到困惑。此外,请注意,自 Java 1.1 起,setXx
方法已被弃用,因为它们在不同的时区中不可靠。 - Ole V.V.let datestring = "2017-02-14 02:16:28"
let formatter = DateFormatter()
formatter.dateStyle = DateFormatter.Style.full
formatter.timeStyle = DateFormatter.Style.full
formatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let date = formatter.date(from: datestring)
let date2 = formatter.String(from: date)
Date
对象,然后将其格式化。如果你实际上是从数据库检索数据,你应该使用ResultSet#getTimestamp()
方法获取一个Date
,如 你之前的一个问题 中所回答的那样。或者更好的方法是利用 SQL 内置的日期/时间函数返回已经按照所需格式排列的时间戳,这样就不需要在 Java 中昂贵地重新组织每一行数据了。在这种情况下,只需使用ResultSet#getString()
获取小时即可。使用正确的工具来完成工作。 - BalusC