日期 Formating:I 希望根据格式为 '0001-01-01-00.00.00.000000' 的时间戳获取以下日期格式 25/11/1990 14:35

Date Formating:I would like to obtain the following date format 25/11/1990 14:35 based on a Timestamp of format '0001-01-01-00.00.00.000000'

我想根据格式为“0001-01-01-00.00.00.000000”的时间戳获取以下日期格式 25/11/1990 14:35。

需要通过 Angular 6 或 Java 8 完成。

请提供任何相关解决方案。

我的方法:

Timestamp timestamp = Timestamp.valueOf("1990-11-25 01:02:03.123456789")//Value from Db.
String str = timestamp.tostring();
str.substring();

这有助于我向用户显示,但当我将其转换为字符串时,我无法将其存储在数据库中,因为数据库将仅存储时间戳格式。

java.time 和 JDBC 4.2

我强烈建议您使用 java.time,现代的 Java 日期和时间 API,而不是旧的 Timestamp class。此示例代码段包括如何从数据库中检索时间戳并为用户格式化它:

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDateTime(FormatStyle.SHORT)
            .withLocale(Locale.forLanguageTag("pt"));

    PreparedStatement query = yourDatabaseConnection.prepareStatement(
            "select your_timestamp_column from your_table where id = 4;");
    ResultSet rs = query.executeQuery();
    if (rs.next()) {
        OffsetDateTime dateTime
                = rs.getObject("your_timestamp_column", OffsetDateTime.class);
        String str = dateTime.format(formatter);
        System.out.println(str);
    }

示例输出为

25/11/1990 14:35

请在我放置 pt(葡萄牙语)的位置插入您的用户的语言标签。或者省略 withLocale 调用以依赖 JVM 的默认语言环境。并注意使用 getObject() 而不是 getTimestamp().

我在代码中使用了 OffsetDateTime,假设您的数据库中的数据类型是 timestamp with time zone,这是时间戳的推荐类型。在这种情况下,您可能还想在格式化之前将时间戳转换为用户的时区。

如果数据类型是 timestamp 且没有时区,则以完全相同的方式使用 LocalDateTime

Link: Oracle tutorial: Date Time 解释如何使用 java.time.