Java 从日期字符串中提取时间
如何设置日期字符串的格式,以便只描述日期字符串和实际对象之间的转换。以Java 从日期字符串中提取时间,java,string,date,time,Java,String,Date,Time,如何设置日期字符串的格式,以便只描述日期字符串和实际对象之间的转换。以Date为起点,您可以根据SimpleDataFormat的javadoc中定义的各种模式轻松应用格式(单击javadoc的蓝色代码链接) 以下是一个启动示例: String originalString = "2010-07-14 09:00:02"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(originalString); String n
Date
为起点,您可以根据SimpleDataFormat
的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
我假设你的第一个字符串是一个实际的日期对象,如果我错了,请纠正我。如果是,请使用SimpleDataFormat对象:。格式字符串“h:mm”应该处理它
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);
一个非常简单的方法是使用(请参阅)或更直接地使用
如果您有整数形式的日期,您可以使用如下:
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);
当被问到这个问题时,其他答案都是很好的答案。随着时间的推移,
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
难道H:mm
不是一个更明智的选择吗?即使字符串最初不是Date
对象,您也可以使用simpleDataFormat.parse()
将其转换为一个,就像BalusC的例子一样。事实上,没有AM/PM标记(a
),您更喜欢上面的H
,以避免9:00(上午)和9:00(下午)之间的歧义。如果我有一个unixtimestamp,如:1279080000,是否也可以以小时:分钟为单位格式化??我尝试了以前帖子中的建议,但没有帮助。谢谢您您可以构造一个时间戳为毫秒的新Date
对象,然后格式化它。如果您实际上是从DB中检索它,则应使用ResultSet#getTimestamp()
获取中回答的日期。甚至更好的方法是,使用SQL内置的日期/时间函数以所需的格式返回已经存在的时间戳,这样就不需要在Java中重新传递每一行的数据这一昂贵的任务。在这种情况下,只需通过ResultSet#getString()
获取小时数即可。使用正确的工具完成我从数据库中获取的作业。但需要生成打印报告。所以我想我可以迭代这些值并动态地更改它们。因为我最后需要把它打印出来。无法以任何StarRightForward方式完成此操作:(@BalusC是否有一种方法可以根据手机偏好以用户的手机格式显示它,即am/pm或24小时,而无需设置默认值,如“H:mm”?以及如何获得上午/下午?请解释您的答案,以便让其他读者更清楚。如果出于某种原因,您可以在8月份使用07,但请注意,08或09在9月或10月不起作用。0前缀表示数字是八进制的。另外请注意,如果您打算在问题中的日期,2010-07-14
,您将错过ed.Date
months是基于0的,所以您得到的是8月,而不是7月。您可能会争辩说,由于您只输出时间,这并不重要,但肯定会混淆一些。此外,请注意,setXx
方法自Java 1.1以来一直被弃用,因为它们跨时区不可靠。对于swift 3。
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)
String timeString = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))
.format(DateTimeFormatter.ofPattern("H:mm"));