我坚持将 DateTime 格式转换为字符串,我只是不知道如何正确地从这种类型中获取小时分钟和秒。当我尝试我的方式时,我得到了类似的东西2020-01-17T20:19:00
。但我需要得到公正20:19:00
。
import org.joda.time.DateTime;
public DateTime orderDateFrom;
Log.d(TAG, orderDateFrom.toString());
我坚持将 DateTime 格式转换为字符串,我只是不知道如何正确地从这种类型中获取小时分钟和秒。当我尝试我的方式时,我得到了类似的东西2020-01-17T20:19:00
。但我需要得到公正20:19:00
。
import org.joda.time.DateTime;
public DateTime orderDateFrom;
Log.d(TAG, orderDateFrom.toString());
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);
尝试这个
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
由于您已经在使用 Joda-Time,我建议您在两个选项之间进行选择:
我当然完全不赞成的选择是返回Date
和SimpleDateFOrmat
退出 Java 1.0 和 1.1。这些类设计不佳且早已过时,后者尤其是出了名的麻烦。
如果您希望将时间从您的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 API 级别 26 和/或更高级别编程,则 java.time 是内置的。如果您需要考虑较低的 API 级别,java.time 就像 Joda-Time 一样作为外部依赖项出现:ThreeTenABP。这是 JSR-310 的 ThreeTen,java.time 是第一次被描述的地方,以及 Android Backport 的 ABP。请参阅底部的链接。
代码将相似,与上面使用 Joda-Time 的代码不同。
java.time
Java 6 和 7 的反向移植。可能有更好的方法来做到这一点,但你可以得到子字符串。
String orderDateStr = orderDateFrom.toString();
orderDateStr.substring(orderDateStr.lastIndexOf("T")+1);