[英]Android date picker showing incorrect format
我在这里无法获得正确的格式。 我正在尝试从我的 android 日期选择器中获取正确的日期,以将其推入日期 object。
我的代码
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)
你能帮我解决这个问题吗?
将日期字符串解析为日期 object,然后格式化为 dd-MMM-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:2021 年 8 月 16 日星期一 00:00:00 GMT+05:30
D/mridx:onCreate:21 年 8 月 16 日
您将问题标记为 java-8,所以我想您需要 Java 8 解决方案。 使用 java.time,现代 Java 日期和时间 API 在 Java 8,为您的日期工作。
不幸的是,您的日期选择器使用从 0 到 11 的月份数字作为过时Calendar
class 的余数。因此在我们的代码中我们需要加 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);
我用过这个 static 格式化程序:
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("dd-MMM-yy", Locale.ENGLISH);
此代码段中的 Output 是:
21 年 8 月 16 日
java.time 在新旧 Android 设备上都能很好地工作。 它只需要至少Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
向后移植到 Java 6 和 7(ThreeTen 用于 JSR-310)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.