Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,将日期设置为0/0/0_Java_Date - Fatal编程技术网

Java,将日期设置为0/0/0

Java,将日期设置为0/0/0,java,date,Java,Date,我有一个带有一些日期的对象,我想在getter中返回它们。问题是我需要执行Date.toString()因为我必须打印它们,当日期为空时,我会得到一个NullPointerException 我想在日期为空时返回日期0/0/0,但我不知道如何设置此值。有办法吗?就像newdate(0)返回1970-01-01-00:00:00一样,除了返回0/0/0之外,还有其他类似的方法吗 谢谢 根据定义,没有日期0/0/0,因为没有日期0和月份0。日是集合{1,…,28或30或31}的成员,月是集合{1,…

我有一个带有一些日期的对象,我想在getter中返回它们。问题是我需要执行
Date.toString()
因为我必须打印它们,当日期为空时,我会得到一个
NullPointerException

我想在日期为空时返回日期0/0/0,但我不知道如何设置此值。有办法吗?就像
newdate(0)
返回1970-01-01-00:00:00一样,除了返回0/0/0之外,还有其他类似的方法吗


谢谢

根据定义,没有日期0/0/0,因为没有日期0和月份0。日是集合{1,…,28或30或31}的成员,月是集合{1,…,12}的成员。因此,不可能将0/0/0表示为日期对象,这是好事。

根据定义,没有日期0/0/0,因为没有日期0和月份0。日是集合{1,…,28或30或31}的成员,月是集合{1,…,12}的成员。因此,将0/0/0表示为日期对象是不可能的,这是好事。

这个简单的方法可以满足您的需要,正如您的问题评论中已经提到的:

public String dateString(Date date) {   
    if (date != null)
        return date.toString();
    else
        return "0/0/0";
}


更新:如评论中所建议的,不鼓励第二种选择。

如问题评论中所述,这种简单的方法可以满足您的需要:

public String dateString(Date date) {   
    if (date != null)
        return date.toString();
    else
        return "0/0/0";
}


更新:如评论中所建议的,不建议使用第二种选择。

Java使用的是公历,它没有0年。此外,你必须记住,现在也没有月了。将月份设置为“0”将得到一月,因为月份基于0指数。零日也不存在。 假设您正在获取并返回“现代”日期(AD),您可以在BC时代设置“下限”日期。因此,当您得到一个空日期时,您可以返回一个BC日期,以将其与实际日期区分开来。代码如下:

Calendar cal = Calendar.getInstance();    
cal.set(Calendar.ERA, GregorianCalendar.BC); //Set the BC era
cal.set(Calendar.YEAR, 1); //Set the year to 1 BC
cal.set(Calendar.MONTH, 0); //Set the month to January
cal.set(Calendar.DAY_OF_MONTH, 1); //Set the day to 1st
DateFormat df = new SimpleDateFormat("yyyy MMM d G"); //Format the date
String returnedDate = df.format(cal.getTime()); //Generate a String of it for other use
如果您还需要从BC时代获取日期(可能通过设置更旧的日期),则可以根据您的需要自定义代码

编辑:当然,您可以使用其他人的建议,即检查null并返回
“0/0/0”
字符串,但这可能会在以后尝试解析上述字符串时导致进一步的问题。此外,根据定义,0/0/0在公历中不是有效日期(请参见说明),因此应避免使用此“通配符”字符串,并设置实际日期,如我在上文中所述


澄清:公历既不包含0年,也不包含0月或0日。根据定义,也不包含Java实现(这意味着它不是有意限制,它是其概念的一部分)。

Java使用的公历没有0年。此外,你必须记住,现在也没有月了。将月份设置为“0”将得到一月,因为月份基于0指数。零日也不存在。 假设您正在获取并返回“现代”日期(AD),您可以在BC时代设置“下限”日期。因此,当您得到一个空日期时,您可以返回一个BC日期,以将其与实际日期区分开来。代码如下:

Calendar cal = Calendar.getInstance();    
cal.set(Calendar.ERA, GregorianCalendar.BC); //Set the BC era
cal.set(Calendar.YEAR, 1); //Set the year to 1 BC
cal.set(Calendar.MONTH, 0); //Set the month to January
cal.set(Calendar.DAY_OF_MONTH, 1); //Set the day to 1st
DateFormat df = new SimpleDateFormat("yyyy MMM d G"); //Format the date
String returnedDate = df.format(cal.getTime()); //Generate a String of it for other use
如果您还需要从BC时代获取日期(可能通过设置更旧的日期),则可以根据您的需要自定义代码

编辑:当然,您可以使用其他人的建议,即检查null并返回
“0/0/0”
字符串,但这可能会在以后尝试解析上述字符串时导致进一步的问题。此外,根据定义,0/0/0在公历中不是有效日期(请参见说明),因此应避免使用此“通配符”字符串,并设置实际日期,如我在上文中所述

澄清:根据定义,公历既不包含0年,也不包含0月或0日,也不包含Java实现(这意味着它不是有意限制,它是其概念的一部分)。

  • 类别:
  • 包装:
我的解决方案是使用纪元日期作为基础,使用
LocalDate.ofEpochDay()
创建LocalDate常量。我没有返回null date(),而是根据评估的案例返回LocalDate对象。然后根据我在我的域中得到的getBirthdate方法,我会做一些事情

常数的定义 实施 用法

德国劳埃德船级社
  • 类别:
  • 包装:
  • 我的解决方案是使用纪元日期作为基础,使用
    LocalDate.ofEpochDay()
    创建LocalDate常量。我没有返回null date(),而是根据评估的案例返回LocalDate对象。然后根据我在我的域中得到的getBirthdate方法,我会做一些事情

    常数的定义 实施 用法


    GL

    可怕的
    Date
    Calendar
    类在几年前被java.time类取代

    LocalDate
    该类表示一个只包含日期的值,不包含一天中的时间,也不包含或

    你可以用一个数字来设置月份,1-12月的数字为1-12

    LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.
    
    或者,最好使用预定义的枚举对象,一年中每个月一个。提示:在整个代码库中使用这些
    Month
    对象,而不仅仅是一个整数,这样可以使代码更加自我记录,确保有效值,并提供更高的可用性。同上

    零日期无意义 除了返回0/0/0之外,是否还有类似的内容

    没有

    试图用日期全为零来表示
    null
    ,是错误的做法。不存在日期全为零的情况(年、月、日都为零)

    相反,选择任意日期作为特殊值。详细记录您的选择及其含义

    不要选择dat
        if (getBirthdate() == LocalDateUtils.EMPTY_FIELDS) {
        }
    
        if (getBirthdate() == LocalDateUtils.EMPTY_FIELD_DAY_OF_MONTH) {
        }
    
        if (getBirthdate() == LocalDateUtils.EMPTY_FIELD_MONTH) {
        }
    
        if (getBirthdate() == LocalDateUtils.EMPTY_FIELD_YEAR) {
        }
    
    LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.
    
    LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;