我想构建一个带有区域设置日期和小时的字符串,连接起来,它必须是人类可读的并且与最常见的操作系统文件允许的字符兼容。就像是:
6-23-20_03-06-50
我将此用作用户的自动文件名建议。为此,我编写了以下代码:
public class CustomDateProvider {
private static final String TWO_DIGIT_PATTERN = "%02d";
public static String getDashedDateAndHourFromDate(Date date) {
ZonedDateTime dateTime = date.toInstant().atZone(ZoneId.systemDefault());
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String localeDate = dateFormat.format(date);
String dashedDate = localeDate.replace("/", "-");
return dashedDate
+ "_"
+ String.format(TWO_DIGIT_PATTERN, hour)
+ "-"
+ String.format(TWO_DIGIT_PATTERN, minute)
+ "-"
+ String.format(TWO_DIGIT_PATTERN, second);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我假设日期分隔符字符将始终为“ / ”,并且我不确定这是否总是正确的。无论哪种方式,可能都有更好的方法来实现我的目标,我会很感激任何改进。