【发布时间】:2017-09-11 16:05:33
【问题描述】:
我编写了这段代码来将 12H 时间转换为 24H 时间,但需要输入:
07:05:45 下午
我得到的输出为:
07:05:45
这是代码
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 中传递命令行参数。
另外,如果您在查看我的代码后建议我一些良好的编码习惯,那将非常有帮助。
【问题讨论】:
-
您是要修复此代码,还是要更改日期格式的简单方法?
-
我想修复此代码,这是主要动机,但也欢迎任何其他解决问题的方法
-
关于你的问题如何做得更好:评论你的算法的每个块(目的是什么),你提到你使用
intelliJ所以使用Reformat Code选项(相同的意图,间距) ,更好的变量命名(已在答案中提到),使用调试器查找错误(这将很容易帮助您在此处识别您的问题 - 区分大小写匹配)。
标签: java time datetime-parsing datetime-conversion