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)类
下面是Joda Time 2.3中的示例代码

/©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/<代码>,你会考虑会发生什么吗?我认为这个问题是不可能的,因为我一直在尝试整一天的代码,那么如果发生了什么呢?我的答案最后一行是的,这就是我为什么不投票的原因。