【发布时间】:2011-03-31 02:50:36
【问题描述】:
如何格式化"2010-07-14 09:00:02" 日期字符串以仅描述"9:00"?
【问题讨论】:
如何格式化"2010-07-14 09:00:02" 日期字符串以仅描述"9:00"?
【问题讨论】:
使用SimpleDateFormat 在日期字符串和真正的Date 对象之间进行转换。以Date 为起点,您可以轻松应用基于SimpleDateFormat 的javadoc 中定义的各种模式的格式(单击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 对象,其时间戳以毫秒为单位,然后对其进行格式化。如果您实际上是从 DB 中检索它,您应该使用ResultSet#getTimestamp() 来获得Date,正如one of your previous questions 中所回答的那样。或者更好的是,利用 SQL 内置的日期/时间函数以所需格式返回时间戳,这样就不需要在 Java 中重新组合每一行数据的昂贵任务。在这种情况下,只需通过ResultSet#getString() 获取小时。为工作使用正确的工具
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
【讨论】:
一个非常简单的方法是使用Formatter(见date time conversions)或更直接的String.format,如
String.format("%tR", new Date())
【讨论】:
我假设你的第一个字符串是一个实际的 Date 对象,如果我错了,请纠正我。如果是这样,请使用 SimpleDateFormat 对象:http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html。格式字符串 "h:mm" 应该处理它。
【讨论】:
H:mm 不是更明智的选择吗?
Date 对象,您也可以使用SimpleDateFormat.parse() 将其变成一个,如BalusC 的示例所示。
a),您宁愿选择 H 而不是 h 以避免在 9:00 (AM) 和 9:00 (PM) 之间产生歧义.
当问题被问到时,其他答案都是很好的答案。随着时间的推移,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。
【讨论】:
如果你有整数日期,你可以在这里使用:
Date 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);
【讨论】:
2010-07-14,则您错过了。 Date 月份是从 0 开始的,所以你得到的是八月,而不是七月。您可能会争辩说,由于您只是输出时间,所以它并不重要,但它肯定会混淆一些人。进一步注意,setXx 方法自 Java 1.1 以来已被弃用,因为它们在时区之间不可靠。
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)
【讨论】: