编写一个java程序,以“dd-MM-yyyy”

时间:2018-03-24 10:22:21

标签: java simpledateformat

import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
import java.text.DateFormat;
import java.util.Locale;

class Main {

    public static void main(String[] args)throws ParseException{
        Scanner sc=new Scanner(System.in);
        System.out.println("enter the date");
        String p=sc.nextLine();

        SimpleDateFormat d=new SimpleDateFormat("dd/MM/yyyy",Locale.ENGLISH);        
        SimpleDateFormat i=new SimpleDateFormat("dd/MM/yyyy");

        try {
           Date m=d.parse(p);
           System.out.println("The input date is"+i.format(m));
        } catch(ParseException e){
           e.printStackTrace();
        }
    }
}

当我运行此问题时,我收到错误

  

java.text.ParseException:Unparseable date:" 27-01-1978"在   java.text.DateFormat.parse(DateFormat.java:366)at   Main.main(Main.java:19)。

应该做些什么来避免这个错误。

1 个答案:

答案 0 :(得分:1)

这是非常基本的:

    DateTimeFormatter formatterWithHyphens = DateTimeFormatter.ofPattern("dd-MM-uuuu");
    DateTimeFormatter formatterWithSlashes = DateTimeFormatter.ofPattern("dd/MM/uuuu");
    LocalDate date = LocalDate.parse(p, formatterWithHyphens);
    System.out.println("The input date is" + date.format(formatterWithSlashes));

输出

  

输入日期为27/01 / 1978

我建议您避开课程SimpleDateFormatDate。它们已经过时了,而前者尤其出了名的麻烦。相反,我正在使用和推荐现代Java日期和时间API java.time。一般来说,使用它会更好。

您的代码出了什么问题

你只需要在问题标题中使用你自己给出的模式:dd-MM-yyyy。当您输入日期中有连字符(短划线)时,格式模式字符串也需要它们。

那为什么我使用uuuu代替yyyy?我真的可以将yyyyjava.time一起使用,多年来在共同时代(“anno domini”)没有区别。 uuuu是签名年份,因此0等于1 BCE,1等于2 BCE等。我的习惯是使用uuuu,除非有yyyy的原因。

此外:使用比dimp更多的解释变量名称。我相信这会让你自己更容易。

链接