【问题标题】:Take int of day, month, year and convert to DD/MM/YYYY取日、月、年的整数并转换为 DD/MM/YYYY
【发布时间】:2017-04-01 13:13:21
【问题描述】:

我正在编写一个方法来获取 3 个整数的 DOB - 日、月、年并返回格式化版本 DD/MM/YYYY。

我目前正在使用 dateFormatter 和简单的日期格式。虽然当我运行它时,它默认为 01/01/1970,我无法更改日期。

有什么建议吗?

更新

各位大大感谢下面的帖子,问题解决了!

【问题讨论】:

  • DateFormat 用于格式化 java.util.Date 的实例。不是整数。顺便说一句,现在有办法找出通过对这三个部分求和而获得的数字的日、月和年部分。使用 LocalDate:docs.oracle.com/javase/8/docs/api/java/time/…

标签: java date


【解决方案1】:

为什么要使用格式化程序?这样做:

   public String DateOfBirth(int day, int month, int year) 
{
    String DOB = day + "/" + month + "/" + year;

    return DOB;
}

如果是作业,老师可能希望你不要使用格式化程序。

另外,正如其他人提到的:如果您尝试将整数连接为字符串,则需要在两者之间添加一些字符串。否则,您正在对整数的值求和。

【讨论】:

  • 如果小于 10,这将为您提供一位数的日期和月份,例如 2/4/2017。我将这个问题理解为要求两位数,例如 02/04/2017。如果您关于避免使用标准课程的假设是正确的(我希望不是),您可以使用String.format()
【解决方案2】:

tl;博士

LocalDate.of( 2017 , 1 , 23 )
         .format( DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) )

23/01/2017

java.time

现代方式使用 java.time 类。

避免使用旧的旧日期时间类,例如 DateCalendar,因为它们设计不佳、令人困惑、麻烦且有缺陷。

LocalDate

LocalDate 表示没有时间和时区的仅日期值。请注意,与传统课程不同的是,这里的月份在 1 月至 12 月的编号为 1-12 是合理的。

LocalDate ld = LocalDate.of( 2017 , 1 , 23 );

DateTimeFormatter

使用格式化程序对象生成一个表示该值的字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );

String output = ld.format( f );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 2014-08-25
    • 2023-04-03
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多