Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日期字符串中提取时间_Java_String_Date_Time - Fatal编程技术网

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"));