在 java android 工作室中格式化 sql 日期时间

format sql datetime in java android studio

如何格式化此日期时间格式 SQL 2019-02-18T06:30:38.9933333 至 2/18/19,6:30 上午 android 工作室使用 java

我已经尝试过 Simpledatetime 没有任何反应。`

String startDate="2019-02-18T06:30:38.9933333"; // Input String
        SimpleDateFormat sdf1 = new SimpleDateFormat("MM-dd-yyyy h:mm tt"); 

        java.util.Date date = sdf1.parse(startDate); 
        java.sql.Date sqlStartDate = new java.sql.Date(date.getTime());

需要帮助.. 谢谢。

使用格式:

yyyy-MM-dd'T'HH:mm:ss.SSSSSSS

更多参考: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

如果您正在使用 java8 或更高版本,也许您正在使用 java.time.LocalDateTime

String startDate = "2019-02-18T06:30:38.9933333"; // Input String
LocalDateTime localDateTime = LocalDateTime.parse(startDate);

java.time、ThreeTenABP 和内置的本地化格式

    DateTimeFormatter formatter
            = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US);

    String startDate = "2019-02-18T06:30:38.9933333"; // Input String
    LocalDateTime dateTime = LocalDateTime.parse(startDate);
    System.out.println(dateTime.format(formatter));

输出:

2/18/19 6:30 AM

仍然比上面的更好,从你的数据库中获取一个 LocalDateTime,或者如果这还不可能,那么你可以像这样转换一个 Timestamp

    LocalDateTime dateTime = DateTimeUtils.toLocalDateTime(timestampFromDatabase);

或者如果使用 Java 8 或更高版本:

    LocalDateTime dateTime = timestampFromDatabase.toLocalDateTime();

格式和以前一样。

通常 Java 比您更了解适合特定观众的最佳格式。使用内置格式还可以让您免于编写格式模式字符串的容易出错的任务。

在第一个片段中,我利用了这样一个事实,即您的输入字符串符合 ISO 8601,这是 java.time 类 默认解析(并打印)的国际标准格式,即是,没有任何明确的格式化程序。

SimpleDateFormatjava.util.Datejava.sql.Date 都设计得很差,而且早就过时了。相反,我使用 java.time,现代 Java 日期和时间 API。

问题:我可以在 Android 上使用 java.time 吗?

是的,java.time 在新旧 Android 设备上都能很好地工作。它只需要至少 Java 6.

  • 在 Java 8 和更新的 Android 设备上(从 API 级别 26)内置了现代 API。
  • 在 Java 6 和 7 中获取现代 类 的 ThreeTen Backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 类。

链接