Java 将标准时间转换为传统时间
我需要把标准时间转换成传统时间 更具体地看一下。您可以使用它们来解析字符串中的日期(包括时间),并将其转换回另一种格式Java 将标准时间转换为传统时间,java,time,Java,Time,我需要把标准时间转换成传统时间 更具体地看一下。您可以使用它们来解析字符串中的日期(包括时间),并将其转换回另一种格式 如何使用它有很多例子。您应该能够轻松地将它们应用到您的用例中。JB不要因为手动操作而一针见血-下面是解释他的想法的代码 public static void printTime(String time){ String[] time_split = time.split(":"); int hour = Integer.parseInt(time_split
如何使用它有很多例子。您应该能够轻松地将它们应用到您的用例中。JB不要因为手动操作而一针见血-下面是解释他的想法的代码
public static void printTime(String time){
String[] time_split = time.split(":");
int hour = Integer.parseInt(time_split[0]);
int minute = Integer.parseInt(time_split[1]);
String am_pm;
if(hour>=12)
am_pm = "PM";
else
am_pm = "AM";
if(hour > 12)
hour -= 12;
if(hour == 0)
hour = 12;
System.out.printf("%d:%d%s\n",hour,minute,am_pm);
}
输出:
上午12:35
使用SimpleDataFormat的解决方案
private static String convertTimes(String stdTime) throws ParseException{
SimpleDateFormat stdF = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat tF = new SimpleDateFormat("hh:mm a");
return tF.format(stdF.parse(stdTime));
}
任何帮助都将不胜感激 让你的生活更轻松,使用一个好的约会时间库来完成这项工作。避免绑定java.util.Date/Calendar类。使用以下任一选项:
- Java8中捆绑的新java.time.*(JSR310)类
/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
//导入org.joda.time.*;
//导入org.joda.time.format.*;
字符串timeString_24Hour=“14:35:22”;
//从字符串到LocalTime对象
DateTimeFormatter格式化程序_24HourTime=DateTimeFormat.forPattern(“HH:mm:ss”);
LocalTime LocalTime=formatter\u 24HourTime.parseLocalTime(timeString\u 24Hour);
//从LocalTime对象到字符串
DateTimeFormatter格式化程序_12HourTime=DateTimeFormat.forPattern(“h:mm:ss aa”);
String timeString_12Hour=格式化程序_12HourTime.print(localTime);
转储到控制台
System.out.println(“timeString\u 24小时:+timeString\u 24小时);
System.out.println(“localTime:+localTime.toString());
System.out.println(“timeString\u 12Hour:+timeString\u 12Hour”);
当运行时
timeString\u 24小时:14:35:22
当地时间:14:35:22.000
时差12小时:下午2:35:22
我更改convertToTraditional()方法以使代码正常工作
static String amPM;// will hold am/pm for standard time
static String traditionalTime;// will store traditional time from user
static int mins1, mins2, hours;// will store hours and minutes
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// user
// input
int tryAgain = 1;// will initial do-while loop
System.out.println("Standard Time to Traditional Time Converter");
System.out.println("===========================================");
do {
System.out.println();
System.out.println("Input a time in Standard Form (HH:MM:SS):");
String standardTime = br.readLine();// user inputs time in standard
// form
System.out.println();
do {
if ((standardTime.length()) != 8) {
System.out.println("Invalid time entered.");
System.out
.println("Input a time in Standard Form that has this form HH:MM:SS ...");
standardTime = br.readLine();// user inputs time in standard
// form
System.out.println();
}
} while ((standardTime.length()) != 8);
convertToTraditional(standardTime);
// if (hours >= 12) {
// System.out.println(standardTime + " is equivalent to "
// + traditionalTime + " PM");
// }
// if (hours < 12) {
// System.out.println(standardTime + " is equivalent to "
// + traditionalTime + " AM");
// }
System.out.println(standardTime + " is equivalent to "
+ traditionalTime);
System.out.println();
System.out.println("Enter 1 to try again.");
tryAgain = Integer.parseInt(br.readLine());// user decides to try
// again
} while (tryAgain == 1);// will repeat if user enters 1
}// closes main body
public static void convertToTraditional(String standardTime) {
String strHours = standardTime.substring(0, 2); // "13"
String strMin = standardTime.substring(3, 5);
hours=Integer.parseInt(strHours);
if(hours>12)
{
hours=hours-12;
traditionalTime=Integer.toString(hours)+":"+strMin+" PM";
} else
{
traditionalTime=strHours+":"+strMin+" AM";
}
}
静态字符串amPM;//将在标准时间上午/下午举行
静态字符串传统时间;//将存储来自用户的传统时间
静态整数分钟1,分钟2,小时;//将存储小时和分钟
公共静态void main(字符串args[])引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));//用户
//输入
int-tryAgain=1;//将在循环时初始化do
System.out.println(“标准时间到传统时间转换器”);
System.out.println(“======================================================================”);
做{
System.out.println();
System.out.println(“以标准格式输入时间(HH:MM:SS):”;
String standardTime=br.readLine();//用户以标准格式输入时间
//形式
System.out.println();
做{
如果((standardTime.length())!=8){
System.out.println(“输入的时间无效”);
系统输出
.println(“以标准格式输入具有此格式的时间HH:MM:SS…”);
standardTime=br.readLine();//用户以标准格式输入时间
//形式
System.out.println();
}
}而((standardTime.length())!=8);
转换为传统(标准时间);
//如果(小时数>=12){
//System.out.println(standardTime+“相当于”
//+传统时间+“PM”);
// }
//如果(小时数<12){
//System.out.println(standardTime+“相当于”
//+传统时间+“AM”);
// }
System.out.println(standardTime+“相当于”
+传统时间);
System.out.println();
System.out.println(“输入1重试”);
tryAgain=Integer.parseInt(br.readLine());//用户决定尝试
//再次
}while(tryAgain==1);//将在用户输入1时重复
}//封闭主体
公共静态无效转换为传统(字符串标准时间){
字符串strHours=standardTime.substring(0,2);/“13”
String strMin=standardTime.substring(3,5);
小时=整数.parseInt(strHours);
如果(小时数>12)
{
小时=小时-12;
traditionalTime=Integer.toString(小时)+:“+strMin+”PM”;
}否则
{
传统时间=strHours+“:”+strMin+“AM”;
}
}
非常感谢您的帮助阅读SimpleDateFormat
因此,根据您的推理,“14:35”-12应该是“2:35”。为什么不是“14:23”?字符串不是数字。您需要解析字符串,提取数字,对数字进行算术运算,然后重新创建字符串。除了字符串
到整数
解析之外。如果有人输入了<01:121:12/<代码>,你会考虑会发生什么吗?我认为这个问题是不可能的,因为我一直在尝试整一天的代码,那么如果发生了什么呢?我的答案最后一行是的,这就是我为什么不投票的原因。