当前位置: 首页 > 知识库问答 >
问题:

时间转换12h至24h

殷宇
2023-03-14

我写了这段代码来将12h时间转换为24h时间,但有一个输入:

07:05:45pm

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Demo
{
static String timeConversion(String s)
{
    // Complete this function
    char a = 'a';
    char l = 0, m = 0;
    int l1 = 0, m1 = 0;
    final int RADIX = 10;
    char p = 'p';
    String str = new String();
    char t1 = 0;
    int t2 = 0;
    char arr[] = new char[10];
    arr = s.toCharArray();
    int a1 = Character.getNumericValue(arr[0]);
    int a2 = Character.getNumericValue(arr[1]);
    int t = (10*a1)+(a2);
    char _1 = '1', _2 = '2';
    if(arr[8]==p)
    {
        if((arr[0]==(_1))&&(arr[1]==(_2)))
        {
            char arr1[] = new char[8];
            for(int i = 0; i < 8; i++)
                arr1[i] = arr[i];
            str=String.copyValueOf(arr1);
        }
        else
        {
            t2 = t + 12;
            l1 = (t2%10);
            t2/=10;
            m1 = (t2%10);
            m = Character.forDigit(m1, RADIX);
            l = Character.forDigit(l1, RADIX);
            arr[1] = l;
            arr[0] = m;
            char arr1[] = new char[8];
            for(int i = 0; i < 8; i++)
                arr1[i] = arr[i];
            str=String.copyValueOf(arr1);
        }
    }
    else
        {
            char arr1[] = new char[8];
            for(int i = 0; i < 8; i++)
                arr1[i] = arr[i];
            str=String.copyValueOf(arr1);
        }
    return str;

}

public static void main(String[] args)
{
    //Scanner in = new Scanner(System.in);
    //String s = in.next();
    String s = "07:05:45PM";
    String result = timeConversion(s);
    System.out.println(result);
}
}    

正如您所看到的,我对输入进行了硬编码,因为intellij不允许我传递命令行参数,所以我还想知道如何在intellij中传递命令行论证。

此外,如果你在看了我的代码后能给我一些好的编码习惯,那将是非常有帮助的。

共有1个答案

江英卓
2023-03-14
LocalTime
    .parse("07:05:45PM", DateTimeFormatter.ofPattern("hh:mm:ssa"))
    .toString()

另一种选择是使用内置的日期/时间API。

如果您使用的是Java8,请考虑使用新的Java.time API。与旧的API相比,它更容易、更少的bug和更少的错误倾向。

如果您使用的是Java<=7,那么可以使用ThreeTen Backport,这是Java8新的日期/时间类的一个很好的Backport。对于Android,您还需要ThreeTenABP(这里有更多关于如何使用它的信息)。

String s = "07:05:45PM";
// formatter with format "hour:minute:second" followed by "AM/PM"
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mm:ssa");
// parse and get the result as a String
String result = LocalTime.parse(s, fmt).toString();
System.out.println(result);

如果希望输出采用不同的格式,只需使用所需的模式创建另一个DateTimeFormatter,并使用format方法。有关所有可用模式的更多信息,请查看javadoc。

 类似资料:
  • 我找不到这个问题的解决方案,我正在从firebase获取数据,其中一个字段是时间戳,看起来像这样- Swift示例(作品): 我的飞镖尝试: 并且它返回的日期/时间是错误的。 更新:

  • 当将同一时间从Sri Jeyawardenepura转换回珀斯时(1/31/2005 11:30 PM),它转换到1/1/2006 3:00 AM。 时区换算为什么会有一个小时的差?

  • 问题内容: 我有一个UTC时间(纪元Unix时间),其格式设置为时间戳,如下所示。 (人类可读的值:2017年5月31日09:57:00) 我需要将格式化为Unix时间的时间戳转换为GPS时间格式,如下所示。 (人类可读的值:2017年5月31日09:57:00) 我需要一个python程序(算法对我来说很好)将Unix时间格式的时间戳转换为GPS时间格式的时间戳。 有一个PHP程序可以这样做。我

  • 我正在尝试转换时区,但它增加了一天额外的java函数。 在上面的停用日期是25,当我给输入时,但在格式化后,它的转换为26,为什么有一天os得到了添加,如何避免它。

  • 从我的数据库我检索值为: 我想要上面的: 我试着用当前的时间戳跟踪 实际时间戳:2018年6月22日星期五16:07:35 更新了,我不想更新,有没有办法保持原样?

  • 主要内容:标签属性,JSF <f:convertDateTime>实例,JSF <f:convertDateTime>实例2标签用于将用户输入转换为指定的日期。 您可以通过将组件标签内的标签嵌套来将组件的数据转换为。 标签有几个属性,可以指定数据的格式和类型。 标签属性 属性 类型 描述 binding DateTimeConverter 它用于将转换器绑定到受委托Bean属性。 dateStyle String 它用于定义由指定的日期或日期字符串的日期部分的格式。 只适用于是或,如果未定义。