相关疑难解决方法(0)

将时区字符串日期解析为Java的即时数据

我正在阅读一些发送典型内容的 RSS 网站:

  • ISO表示法
    • 2019-06-12T07:17:47Z-Instant.parse()可以使用
  • RFC1123
    • Wed, 12 Jun 2019 03:17:47 -0400-DateTimeFormatter.RFC_1123_DATE_TIME.parse()可以使用

相反,我得到这些字符串:

  • Tue, 25 May 2021 00:00:00 EDT
  • 03 Jun 2021 18:35:00 HKT

我已经尝试过一些自定义模式和 ZonedDateTime + OffsetDateTimeparse()方法。尽管我还没有找到一种方法来获取可以转换为Instant. 我既不能控制源,也不能修复输出格式。

我怎样才能更宽容地解析这些日期时间?

java java-time

3
推荐指数
1
解决办法
747
查看次数

无论时区如何,都以UTC格式获取设备时间

我怎样才能获得设备的本地时间并将其转换为我国家的全球UTC格式?

java timezone datetime android utc

2
推荐指数
1
解决办法
4059
查看次数

如何在Java中将这个"Tue Nov 13 14:35:04 +0000 2012"字符串格式转换为日期?

如何Tue Nov 13 14:35:04 +0000 2012在Java 中将日期字符串格式转换为日期?我知道,Date.parse(String)但我不知道我应该使用哪种格式的日期.我是否必须修改字符串以便将其解析为日期,如果是,那么如何?

java date

2
推荐指数
1
解决办法
2612
查看次数

这个Java日期格式有什么问题?

电子邮件消息的解析器包含以下数据格式定义:

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)

java format parsing date

2
推荐指数
1
解决办法
619
查看次数

如何将给定时间(字符串)转换为LocalTime?

我将要求用户输入一个特定时间:10 AM、12:30PM、2:47PM、1:09AM、5PM,等等。我将使用a Scanner来获取用户的输入。

如何将其解析/转换StringLocalTime对象?Java中是否有任何内置函数可以使我做到这一点?

java datetime-parsing java-time

2
推荐指数
1
解决办法
811
查看次数

如何在java中比较格式“EEE MMM dd HH:mm:ss zzz yyyy”和“yyyy-MM-dd hh:mm:sss”的日期时间?

我的日期类型为“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中比较这两个日期?

两个日期都在同一时区。

java datetime datetime-comparison

2
推荐指数
1
解决办法
2331
查看次数

Java11 解析本地时间 HH:mm am/pm 不起作用,Java8 可以

我正在运行以下测试以 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)

java datetime

2
推荐指数
1
解决办法
54
查看次数

在 Kotlin 中将日期字符串转换为所需的格式

我想将日期转换为所需的格式。我知道首先我需要转换为日期,然后需要格式化该日期。我的问题是以简单的形式进行的任何最简单的方法。对性能有影响吗?因为我的列表中有所有这些日期。

例如

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)

java date simpledateformat kotlin

2
推荐指数
1
解决办法
8059
查看次数

Java - 将日期格式化的String从SQL db转换为日期对象以进行比较

我有存储在数据库中的字符串(例如: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种子不正确.洞察力得到赞赏

java sql format date simpledateformat

1
推荐指数
1
解决办法
7365
查看次数

Java YearMonth 不会解析,但只能在我的电脑上?

我一直在从事一个项目,需要我以这种方式解析字符串,我已经分离出了引发错误的小部分,


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 版本),我真的不明白为什么这不起作用,请帮助哦明智的互联网人们......

java parsing java-time java-11

1
推荐指数
1
解决办法
410
查看次数