有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从年、月、日创建java日期对象

int day = Integer.parseInt(request.getParameter("day"));  // 25
int month = Integer.parseInt(request.getParameter("month")); // 12
int year = Integer.parseInt(request.getParameter("year")); // 1988

System.out.println(year);

Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0);  

b.setDob(c.getTime());

System.out.println(b.getDob());  

输出为:

1988
Wed Jan 25 00:00:08 IST 1989

我通过了25 12 1988,但我得到了25 Jan 1989。为什么


共 (6) 个答案

  1. # 1 楼答案

    爪哇。时间

    使用内置在Java8中的java.time框架

    int year = 2015;
    int month = 12;
    int day = 22;
    LocalDate.of(year, month, day); //2015-12-22
    LocalDate.parse("2015-12-22"); //2015-12-22
    //with custom formatter 
    DateTimeFormatter.ofPattern formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
    LocalDate.parse("22-12-2015", formatter); //2015-12-22
    

    如果您还需要有关时间(小时、分钟、秒)的信息,请使用从LocalDateLocalDateTime的转换

    LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00
    
  2. # 2 楼答案

    这是我在Java 8之前最喜欢的方式:

    Date date = new GregorianCalendar(year, month - 1, day).getTime();
    

    我认为这是一种比以下更干净的方法:

    calendar.set(year, month - 1, day, 0, 0);
    
  3. # 3 楼答案

    JavaDoc

    month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January.

    所以,你设定的月份是明年的第一个月

  4. # 4 楼答案

    Java的日历表示不是最好的,他们正在为Java8开发它。我建议你使用Joda Time或其他类似的图书馆

    下面是一个使用Joda时间库中LocalDate的快速示例:

    LocalDate localDate = new LocalDate(year, month, day);
    Date date = localDate.toDate();
    

    Here你可以学习快速入门教程

  5. # 5 楼答案

    月份在日历中是以零为基础的。所以12月被解释为12月+1个月。使用

    c.set(year, month - 1, day, 0, 0);  
    
  6. # 6 楼答案

    在处理日期、时间戳和持续时间时,让你的生活变得轻松。使用HalDateTime from

    http://sourceforge.net/projects/haldatetime/?source=directory

    例如,您可以使用它来解析输入,如下所示:

    HalDateTime mydate = HalDateTime.valueOf( "25.12.1988" );
    System.out.println( mydate );   // will print in ISO format: 1988-12-25
    

    还可以指定用于解析和打印的模式