Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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_Java - Fatal编程技术网

格式日期转换java

格式日期转换java,java,Java,DateConversion程序将用户输入的日期格式转换为另一种格式。此程序运行良好。输入格式为mm/dd/yyyy,但如果用户输入的是1999年1月28日而不是1999年1月28日,则程序仍应显示1999年1月28日。可以做哪些修改来做到这一点。欢迎任何帮助! 代码: 如果String.split在范围内,则使用它将用户输入的日期字符串拆分为月份、月份和年份。例如,如果用户想要一月,则月份可能会显示为1或01的字符串 String[] splitDate = enteredDate.s

DateConversion程序将用户输入的日期格式转换为另一种格式。此程序运行良好。输入格式为mm/dd/yyyy,但如果用户输入的是1999年1月28日而不是1999年1月28日,则程序仍应显示1999年1月28日。可以做哪些修改来做到这一点。欢迎任何帮助! 代码:


如果
String.split
在范围内,则使用它将用户输入的日期字符串拆分为月份、月份和年份。例如,如果用户想要一月,则月份可能会显示为
1
01
字符串

    String[] splitDate = enteredDate.split("/");
这将为您提供一个包含三个字符串的数组。您可能需要检查数组的长度是否为3,如果不是(如果更短或更长),则发出错误消息。因此,您可以通过
splitDate[0]
等方式访问月号字符串。如果您有疑问,请阅读数组


如果不允许使用
String.split
,请使用
String.substring
将月份作为
1
01
作为一月。这要求您知道斜线在哪里。使用
indexOf
或仅使用
charAt
查找。对日和年也要这样做

如果您知道一个
switch
语句,请打开刚得到的月份字符串。案例前可能有多个案例标签,例如:

    switch (monthNumberString) {
        case "01":
        case "1":
            System.out.print("January");
            break;
        case "02":
        case "2":
            System.out.print("February");
            break;
        // Etc. for other months
    }
(另一个选项是
Map
,用于保存从数字字符串到月份名称的映射,但我认为这也超出了范围。)

如果您不知道
开关
(或不允许使用它),您仍可以在If语句中使用月份子字符串:

    if (monthNumberString.equals("01") || monthNumberString.equals("1"))
次要建议:

  • 最后使用
    else
    部分(如果使用
    switch
    语句,则使用
    default
    案例)打印有关未识别月份的消息
  • 在需要变量之前不要声明它。在您的程序中,可以在
    do
    循环中声明
    enteredDate
    response
    ,您可以在该循环中首先使用它们,以便更容易地在代码中找到解决方法

您还可以检查字符(0)='1'&&charAt(1)='/'。在我看来,这不是一个漂亮的解决方案,但它应该可以工作,而且我认为已经存在的代码比应该的更复杂,为什么不使用SimpleDataFormat呢。但这与你的问题无关,因此不要就此争论。绝对建议使用标准类来解析和格式化日期。然而,@Fabrizio_P提到的简化格式既过时又麻烦。为了简单明了的代码和更容易的调试,我推荐java.time,即现代的java日期和时间API。这是否要求在没有库类的情况下完成?在这种情况下,我仍然可以考虑对您的代码进行一两次改进。这是在不使用库类的情况下进行的一项要求。但是,任何改进建议都将被删除appretiated@DakshSaini请提供更多信息。当这样做时,请在其中添加信息,以便所有内容都在一个位置。在这种情况下,它也将允许更漂亮的格式。谢谢你的建议。实际使用的else if语句:
else if(enteredDate.charAt(0)='1'&&enteredDate.charAt(1)='/'){System.out.println(“一月”+enteredDate.charAt(2)+“+enteredDate.charAt(3)+”,“+enteredDate.charAt(5)+enteredDate.charAt(6)+”+enteredDate.charAt(7)+enteredDate.charAt(8))
这很有效,但我想缩短代码的长度。还有其他方法吗?@Dakshssaini很高兴你找到了一个有效的解决方案。我仍然相信我在答案中的建议不仅可以缩短代码,而且可以使代码更清晰易读。在现实生活中,这很重要。谢谢你的建议。但是,我不知道如何从每月的字符串输入中获取子字符串。例如,使用split将生成3个标记,那么如何获取每个标记,然后对其进行处理?请参阅我的编辑。@Dakshssainimy的回答收到了2张否决票和一张删除票。我很好奇这是否是因为选民认为(1)我不应该回答这样一个糟糕的问题(2)我应该推荐
java.time
,即使提问者说“这是一个不使用库类的要求”;(3)我应该建议坚持两位数输入,即使作业要求提问者接受1位数或(4)答案有些不好或不好。我很想开悟。
    if (monthNumberString.equals("01") || monthNumberString.equals("1"))