如何在Java中获取以字符串形式传递的日期格式

时间:2016-08-11 10:34:36

标签: java

我将日期作为字符串传递 输入:“2016年8月8日”

我希望输出为上述日期的格式,即

输出:DD MMM YYYY

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:2)

您可以尝试使用固定数量的预定义日期格式,然后使用SimpleDateFormat来解析要测试的日期。使用不会抛出异常的第一个。

但请注意,完全确定无法完成此操作。有太多的选择,而且它们通常含糊不清(例如MM / dd / yyyy与dd / MM / yyyy)。

答案 1 :(得分:1)

TL;博士

LocalDate.parse( "8 Aug 2016" , DateTimeFormatter.ofPattern ( "d MMM uuuu" ).withLocale ( Locale.US ) )

java.time

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

我强烈建议以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值,然后执行两个日期的格式检查(一个解析为所需的格式和实际值)并相应地返回结果。