我正在阅读一些不发送典型内容的 RSS 网站:
2019-06-12T07:17:47Z-Instant.parse()可以使用Wed, 12 Jun 2019 03:17:47 -0400-DateTimeFormatter.RFC_1123_DATE_TIME.parse()可以使用相反,我得到这些字符串:
Tue, 25 May 2021 00:00:00 EDT03 Jun 2021 18:35:00 HKT我已经尝试过一些自定义模式和 ZonedDateTime + OffsetDateTimeparse()方法。尽管我还没有找到一种方法来获取可以转换为Instant. 我既不能控制源,也不能修复输出格式。
我怎样才能更宽容地解析这些日期时间?
我怎样才能获得设备的本地时间并将其转换为我国家的全球UTC格式?
如何Tue Nov 13 14:35:04 +0000 2012在Java 中将日期字符串格式转换为日期?我知道,Date.parse(String)但我不知道我应该使用哪种格式的日期.我是否必须修改字符串以便将其解析为日期,如果是,那么如何?
电子邮件消息的解析器包含以下数据格式定义:
private final static DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
if (line.startsWith("Date:")) {
try {
email.date = dateFormat.parse(line.substring(6));
} catch (ParseException e) {
System.err.println("Unparsable: " + line.substring(6));
}
Run Code Online (Sandbox Code Playgroud)
此代码打印错误:
Unparsable: Mon, 15 Jan 2001 23:18:00 -0800 (PST)
Run Code Online (Sandbox Code Playgroud)
为什么格式不匹配?
EEE, d MMM yyyy HH:mm:ss Z
Run Code Online (Sandbox Code Playgroud) 我将要求用户输入一个特定时间:10 AM、12:30PM、2:47PM、1:09AM、5PM,等等。我将使用a Scanner来获取用户的输入。
如何将其解析/转换String为LocalTime对象?Java中是否有任何内置函数可以使我做到这一点?
我的日期类型为“EEE MM DD HH:mm:ss zzz yyyy”(Wed Mar 04 03:34:45 GMT+08:00 2020)和“yyyy-MM-dd hh:mm:ss”(2020-02) -04 02:10:58).如何在java中比较这两个日期?
两个日期都在同一时区。
我正在运行以下测试以 HH:mm am/pm 格式解析时间,所有 3 个测试在 Java 8 (1.8.0_282) 中都通过,但在最新的 Java 11_0_11 版本中第二和第三个测试失败,只有非常简单的测试(第一次测试没有am/pm info) 在 Java 11 中传递。此外,我正在运行 Oracle JDK 11 以及 AdoptOpenJDK 11,结果相同。
我有传入的 JSON 有效负载包含(作为字符串)之前和之后的 am/pm 信息。我需要从它们中解析出本地时间,然后将本地时间相互比较,看看一个是否在另一个之前。
@Test
public void testLocalTime1() { //passed with java8 and java 11
LocalTime localTime = LocalTime.parse("11:15", DateTimeFormatter.ofPattern("HH:mm"));
System.out.println(localTime);
}
@Test
public void testLocalTime2() {//passed with java8 only, failed with java 11
LocalTime test = LocalTime.parse("8:00 am".toUpperCase(),
DateTimeFormatter.ofPattern("h:mm a"));
System.out.println(test);
}
@Test
public void testLocalTime3() {//passed with java8 only, failed with java …Run Code Online (Sandbox Code Playgroud) 我想将日期转换为所需的格式。我知道首先我需要转换为日期,然后需要格式化该日期。我的问题是以简单的形式进行的任何最简单的方法。对性能有影响吗?因为我的列表中有所有这些日期。
例如
fun main(vararg args: String) {
val dateString = "2021-05-12T12:12:12.121Z"
val convertedDate = convertDate(dateString)
print(
convertedDate?.let {
formatDate(it)
}
)
}
fun formatDate(date: Date): String {
return SimpleDateFormat("MMM dd, YYYY").format(date)
}
fun convertDate(dateString: String): Date? {
return SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(dateString)
}
Run Code Online (Sandbox Code Playgroud)
输出
May 12, 2021
Run Code Online (Sandbox Code Playgroud) 我有存储在数据库中的字符串(例如:Sat Jul 09 14:20:31 EDT 2011)
它存储为字符串(我知道SQL的日期功能,但我现在还没有探索).
我想强调这一点并使用该Date.compare功能将其与当前时间进行比较
Date currentDate = new Date(); // the new current time value
mCursor.getString(mCursor.getColumnIndex(TIMECOLUMN) //从SQL数据库中提取的旧存储时间值
从数据库我有一个字符串值已经格式化为正确的日期.但是我没有明显的功能可以将它与我当前的日期作为日期对象进行比较.
我需要知道一个是否大于,小于或等于另一个.Date compare函数允许这样做,但对象需要是一个日期对象.
我已尝试SimpleDateFormat使用字符串的日期格式播种,但我得到一个解析异常"不可解析的日期",也许是因为它已经格式化了?
Date currentDate = new Date();
SimpleDateFormat dateTest = new SimpleDateFormat("E M d HH:mm:ss z y");
if(currentDate.compareTo(dateTest.parse((mCursor.getString(mCursor.getColumnIndex(TIMECOLUMN))))) > 0)
回报 java.text.ParseException: Unparseable date: Sat Jul 09 14:20:31 EDT 2011
我怀疑我的SimpleDateFormat种子不正确.洞察力得到赞赏
我一直在从事一个项目,需要我以这种方式解析字符串,我已经分离出了引发错误的小部分,
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
public class TestingYearMonth {
public static void main(String[] args) {
YearMonth yearMonth = YearMonth.parse("Feb-17", DateTimeFormatter.ofPattern("MMM-yy"));
System.out.println(yearMonth.getMonth() + " " + yearMonth.getYear());
}
}
Run Code Online (Sandbox Code Playgroud)
我的老师运行完全相同的代码,它返回输出没有问题。但是当我运行它时出现以下错误
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Feb-17' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.YearMonth.parse(YearMonth.java:295)
at com.ethanbradley.assignment6.TestingYearMonth.main(TestingYearMonth.java:10)
Run Code Online (Sandbox Code Playgroud)
我们检查了一下,我的 jdk 很好(jdk 11,亚马逊 coretto 版本),我真的不明白为什么这不起作用,请帮助哦明智的互联网人们......