将乔达时间日期时间格式化为字符串



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

import org.joda.time.DateTime; 
public DateTime orderDateFrom;
Log.d(TAG, orderDateFrom.toString());

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

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

我当然全心全意地不鼓励选择从Java 1.0和1.1回到DateSimpleDateFOrmat。这些课程设计不佳且早已过时,后者尤其臭名

昭著。

坚持乔达时间

如果您希望将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的代码不同。

链接

  • Oracle 教程:日期时间解释如何使用 java.time。
  • Java 规范请求 (JSR( 310。
  • ThreeTen Backport 项目,将java.time向 Java 6 和 7 的反向移植。
  • ThreeTenABP,ThreeTen Backport 的安卓版
  • 问:如何在Android项目中使用ThreeTenABP,并进行了非常详尽的解释。

试试这个

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
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);

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

String orderDateStr = orderDateFrom.toString();
orderDateStr.substring(orderDateStr.lastIndexOf("T")+1);

最新更新