我在这里找不到正确的格式。我正试图从我的android日期选择器中获得一个适当的日期,以推入日期对象。
我的代码
final android.icu.util.Calendar cldr = android.icu.util.Calendar.getInstance();
int day = cldr.get(android.icu.util.Calendar.DAY_OF_MONTH);
int month = cldr.get(android.icu.util.Calendar.MONTH);
int year = cldr.get(android.icu.util.Calendar.YEAR);
picker = new DatePickerDialog(getContext(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, year, month, day);
picker.show();
结果为16-08-21(d-mm-yy)
但我需要16-Aug-21 (dd-mmm-yy)
你能帮我一下吗?
将日期字符串解析为日期对象,然后格式化为dd- mm -yy
String dateString = "16-08-21";
Date parsedDate = SimpleDateFormat("dd-MM-yy").parse(dateString);
String formattedDateString = SimpleDateFormat("dd-MMM-yy").format(parsedDate);
Log.d("mridx", "onCreate:" +parsedDate);
Log.d("mridx", "onCreate:" + formattedDateString);
日志D/mridx: onCreate: Mon Aug 16 00:00:00 GMT+05:30 2021
D/mridx: onCreate: 16-Aug-21
java.time
你把你的问题标记为Java -8,所以我想你想要Java 8的解决方案。使用java。time, Java 8中引入的现代Java日期和时间API,用于您的日期工作。
不幸的是,您的日期选择器使用月数0到11作为过时的Calendar
类的余数。因此,在我们的代码中,我们需要添加1。
int year = 2021;
int monthOfYear = Calendar.AUGUST; // Don’t use Calendar in your code; for demonstration only
int dayOfMonth = 16;
LocalDate date = LocalDate.of(year, monthOfYear + 1, dayOfMonth);
String dateString = date.format(DATE_FORMATTER);
System.out.println(dateString);
我已经使用了这个静态格式化器:
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("dd-MMM-yy", Locale.ENGLISH);
这个片段的输出是:
16-Aug-21
问题:不java。何时需要Android API级别26?
java。time在新旧Android设备上都能很好地运行。它只需要至少Java 6.
- 在Java 8和更高版本以及较新的Android设备(从API级别26开始),现代API是内置的。
- 在非android Java 6和7中获得ThreeTen Backport,现代类的后端口(JSR 310的ThreeTen;参见底部的链接)。
- 在旧的Android上使用desugaring或Android版的ThreeTen Backport。它被称为ThreeTenABP。在后一种情况下,确保从
org.threeten.bp
和子包中导入日期和时间类。
- Oracle教程:日期时间说明如何使用java.time.
- Java规范请求(JSR) 310,
java.time
首次被描述。 - ThreeTen Backport项目,
java.time
的Backport到Java 6和7 (ThreeTen for JSR-310)。 Java 8+ api - ThreeTenABP, Android版的ThreeTen Backport
- 问题:如何在Android项目中使用ThreeTenABP,有一个非常彻底的解释。