我正在寻找一种解决方案,可以将包含iso基本日期格式的字符串(如20190330)转换为格式化日期,如2019-03-30(欧元格式)或2019年3月30日(英国格式)或2019年3月30日(美国格式)。格式取决于用户选择的格式。库<代码>java。时间LocalDate和java。时间总体安排DateTimeFormatter似乎提供了解决方案的可能性,但我发现这些库的文档不连贯且令人困惑,我不确定是否可以从这些源中找到解决方案。
我已经尝试了代码中显示的返回语句中包含的四种解决方案。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateFormatter {
private static final String EU_PATTERN = "yyyy-MM-dd";
private static final String UK_PATTERN= "dd/MM/yyyy";
private static final String US_PATTERN= "MM/dd/yyyy";
private static final int EU = 1;
private static final int UK = 2;
private static final int US = 3;
private static String formattedDate(int fmt, String isobasic){
String pattern = null;
switch(fmt) {
case EU: {pattern = EU_PATTERN; break;}
case UK: {pattern = UK_PATTERN; break;}
case US: {pattern = US_PATTERN; break;}
}
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);
// return dateFormatter.format(isobasic); // String cannot be converted to Temporal Accessor
// return (String)dateFormatter.format(isobasic); // String cannot be converted to Temporal Accessor
// return LocalDate.parse(isobasic, dateFormatter); // LocalDate cannot be converted to String
return (String)LocalDate.parse(isobasic, dateFormatter); // LocalDate cannot be converted to String
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println(formattedDate(EU, "20180927"));
System.out.println(formattedDate(UK, "20190131"));
System.out.println(formattedDate(US, "20171225"));
}
根据所选格式,预期结果将是三个格式化日期:2018-09-27 2019年1月31日2017年12月25日。实际结果是案例陈述后返回代码后显示的语法错误。
我的解决html" target="_blank">方法是重写案例陈述,并使用以下笨拙的陈述(对于EU格式):
case EU: { return isobasic.substring(0,4) + "-" + isobasic.substring(4,6) + "-" + isobasic.substring(6,8);}
如果这是唯一的解决方案,我会接受它,但我想看看第一个formatter/localdate库提供了一种更优雅的方法。
在我的评论之后,您应该尝试使用您的iso格式从您的字符串中获取TemporalAccess,然后将其格式化为所需的模式。
我只是在你的代码中做了一些小改动来实现这个结果,你可以试试
public class DateFormatter {
private static final String ISO = "yyyyMMdd";
private static final String EU_PATTERN = "yyyy-MM-dd";
private static final String UK_PATTERN = "dd/MM/yyyy";
private static final String US_PATTERN = "MM/dd/yyyy";
private static final int EU = 1;
private static final int UK = 2;
private static final int US = 3;
private static String formattedDate(int fmt, String isobasic) {
String pattern = null;
switch (fmt) {
case EU: {
pattern = EU_PATTERN;
break;
}
case UK: {
pattern = UK_PATTERN;
break;
}
case US: {
pattern = US_PATTERN;
break;
}
}
DateTimeFormatter parser = DateTimeFormatter.ofPattern(ISO);
TemporalAccessor parsedDate = parser.parse(isobasic);
return DateTimeFormatter.ofPattern(pattern).format(parsedDate);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println(formattedDate(EU, "20180927"));
System.out.println(formattedDate(UK, "20190131"));
System.out.println(formattedDate(US, "20171225"));
}
}
我用Java定义了以下格式: 我的应用程序从日历中获取特定日期: 我想以的格式存储另外两个日期。给定的的和。 例如,如果是我想创建以下两个变量- 我该怎么做?
有什么建议吗? 谢谢
我正在研究spring-boot和gradle,以创建一个rest服务。现在我需要将json日期格式设置为“yyyy-MM-dd”,即格式应为dateOfBirth:“16-03-2015”,但我得到的是“dateOfBirth:-751181400000”。我在我的应用程序中添加了以下代码。java类,但仍然无法获得所需的输出。 和应用程序.java: 请帮我解决这个问题。
问题内容: 我有一个输入定义为 将其显示在页面的其他位置: 当页面加载时,出生日期的格式很好,类似于。但是,当我查看我的内部时,它显示为我猜想的是JS如何将对象呈现为字符串。 首先,我如何告诉Angular将日期显示为?我似乎无法在属性内应用。 其次,一旦我编辑了日期,即使将其保留为原始格式,我的其他文本(位于中)似乎也不再应用过滤器;它突然更改了格式以匹配输入文本框的格式。如何在每次模型更改时应
问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为