我将日期作为字符串传递 输入:“2016年8月8日”
我希望输出为上述日期的格式,即
输出:DD MMM YYYY
有人可以帮忙吗?
答案 0 :(得分:2)
您可以尝试使用固定数量的预定义日期格式,然后使用SimpleDateFormat来解析要测试的日期。使用不会抛出异常的第一个。
但请注意,完全确定无法完成此操作。有太多的选择,而且它们通常含糊不清(例如MM / dd / yyyy与dd / MM / yyyy)。
答案 1 :(得分:1)
LocalDate.parse( "8 Aug 2016" , DateTimeFormatter.ofPattern ( "d MMM uuuu" ).withLocale ( Locale.US ) )
java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在在maintenance mode中,Joda-Time项目还建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。
LocalDate
LocalDate
类表示没有时间且没有时区的仅限日期的值。
定义格式化模式。指定定义月份名称的人类语言的Locale
。如果省略,则隐式应用JVM的当前默认值Locale
。默认值可能会有所不同最好明确指定您期望/期望的Locale
。
String input = "8 Aug 2016";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "d MMM uuuu" );
f = f.withLocale ( Locale.US );
LocalDate ld = LocalDate.parse ( input , f );
String output = ld.format ( f );
转储到控制台。
System.out.println ( "input: " + input + " | ld: " + ld + " | output: " + output );
输入:2016年8月8日| ld:2016-08-08 |输出:2016年8月8日
当然,您的解析代码应该捕获DateTimeParseException
被抛出。为简洁而省略。
我强烈建议以ISO 8601的标准格式传递日期时间字符串。对于仅限日期的值,即YYYY-MM-DD。
String input = "2016-08-08" ;
LocalDate ld = LocalDate.parse( input );
String output = ld.toString(); // "2016-08-08"
答案 2 :(得分:0)
public static void main(String[] args) throws ParseException {
String time = "8 Aug 2016";
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
Date date = sdf.parse(time);// this parses your string into a date.
System.out.println(sdf.format(date));//this will format your date in the format you specify.
}
这是一个关于将字符串对象转换为日期的精彩教程。 link
答案 3 :(得分:0)
new SimpleDateFormat("dd MMM yyyy").format(yourDateObject);
答案 4 :(得分:0)
看看java.text.SimpleDateFormat。它允许您指定解析和输出格式的格式。
import java.text.SimpleDateFormat;
public class DateDemo {
public static void main(String[] argv) {
SimpleDateFormat parser = new SimpleDateFormat("d MMM yyyy");
try {
java.util.Date date = parser.parse("8 Aug 2016");
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
System.out.println(formatter.format(date));
} catch (java.text.ParseException e) { // won't happen here
System.err.println("Invalid date");
}
}
}
答案 5 :(得分:0)
我没有提取日期格式,而是将实际日期与所需格式的日期(通过转换该格式的实际日期)进行比较,如下所示。
equation[0]

这里我将两个参数传递给方法isValidFormat(),一个是我需要验证为String格式的日期格式,另一个是作为日期值的String值,然后执行两个日期的格式检查(一个解析为所需的格式和实际值)并相应地返回结果。