2

我坚持将 DateTime 格式转换为字符串,我只是不知道如何正确地从这种类型中获取小时分钟和秒。当我尝试我的方式时,我得到了类似的东西2020-01-17T20:19:00。但我需要得到公正20:19:00

import org.joda.time.DateTime; 

public DateTime orderDateFrom;
Log.d(TAG, orderDateFrom.toString());
4

4 回答 4

2
This will get time as 23:10:04 format

import java.text.SimpleDateFormat;
import java.util.Date;
import org.joda.time.DateTime;


        public DateTime orderDateFrom;

        Date d = orderDateFrom.toDate();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        String formattedDate = sdf.format(d);
于 2020-01-17T20:03:10.397 回答
2

尝试这个

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
于 2020-01-17T20:03:50.110 回答
2

由于您已经在使用 Joda-Time,我建议您在两个选项之间进行选择:

  1. 现在坚持使用 Joda-Time。
  2. 升级到 java.time,现代 Java 日期和时间 API 和 Joda-Time 的继承者。

我当然完全不赞成的选择是返回DateSimpleDateFOrmat退出 Java 1.0 和 1.1。这些类设计不佳且早已过时,后者尤其是出了名的麻烦。

坚持使用 Joda-Time

如果您希望将时间从您的DateTime格式转换为String,例如输出给用户:

    DateTime orderDateFrom = new DateTime(2020, 1, 17, 20, 19, 0, DateTimeZone.forID("Mexico/BajaSur"));

    DateTimeFormatter timeFormatter = DateTimeFormat.forPattern("HH:mm:ss");
    String formattedTime = orderDateFrom.toString(timeFormatter);
    System.out.println("Order time: " + formattedTime);

此片段的输出是:

下单时间:20:19:00

如果您希望将一天中的时间作为可用于进一步处理的对象:

    LocalTime orderTime = orderDateFrom.toLocalTime();
    System.out.println("Order time: " + orderTime);

下单时间:20:19:00.000

我们注意到,由于 no-argtoString方法执行此操作,因此还打印了分钟的第二个小数点后的三个小数。如果您愿意,您可以LocalTime使用与上述相同的格式化程序来格式化以获得相同的字符串。

关于 Android 上 java.time 的说明

如果为 Android API 级别 26 和/或更高级别编程,则 java.time 是内置的。如果您需要考虑较低的 API 级别,java.time 就像 Joda-Time 一样作为外部依赖项出现:ThreeTenABP。这是 JSR-310 的 ThreeTen,java.time 是第一次被描述的地方,以及 Android Backport 的 ABP。请参阅底部的链接。

代码将相似,与上面使用 Joda-Time 的代码不同。

链接

于 2020-01-17T21:20:55.650 回答
0

可能有更好的方法来做到这一点,但你可以得到子字符串。

String orderDateStr = orderDateFrom.toString();
orderDateStr.substring(orderDateStr.lastIndexOf("T")+1);
于 2020-01-17T19:44:42.477 回答