2 shunfurh shunfurh 于 2017.01.09 23:36 提问

时间日期格式转换

Description

世界各地有多种格式来表示日期和时间。对于日期的常用格式,在中国常采用格式的是“年年年年/月月/日日”或写为英语缩略表示的”yyyy/mm/dd”,此次编程大赛的启动日期“2009/11/07”就是符合这种格式的一个日期,而北美所用的日期格式则为“月月/日日/年年年年”或”mm/dd/yyyy”,如将“2009/11/07”改成这种格式,对应的则是”11/07/2009”。对于时间的格式,则常有12小时制和24小时制的表示方法,24小时制用0-24来表示一天中的24小时,而12小时制只采用1-12表示小时,再加上am/pm来表示上午或下午,比如”17:30:00”是采用24小时制来表示时间,而对应的12小时制的表示方法是”05:30:00pm”。注意12:00:00pm表示中午12点,而12:00:00am表示凌晨12点。

对于给定的采用”yyyy/mm/dd”加24小时制(用短横线”-”连接)来表示日期和时间的字符串,请编程实现将其转换成”mm/dd/yyyy”加12小时制格式的字符串。
Input

第一行为一个整数T(T<=10),代表总共需要转换的时间日期字符串的数目。
接下来的总共T行,每行都是一个需要转换的时间日期字符串。
Output

分行输出转换之后的结果
Sample Input

2
2009/11/07-12:12:12
1970/01/01-00:01:01
Sample Output

11/07/2009-12:12:12pm
01/01/1970-12:01:01am

4个回答

caozhy
caozhy   Ds   Rxr 2017.01.09 23:53
已采纳
JE_GE
JE_GE   2017.01.09 23:47

Java8中时间日期库的20个常用使用示例
http://blog.csdn.net/chenleixing/article/details/44408875

caozhy
caozhy 答非所问
11 个月之前 回复
Book1346
Book1346   2017.01.10 10:33

也不知道你是要的什么语言的代码。
公司电脑上习惯用Java,就写了个Java的吧


import java.util.Scanner;

public class TimeTrans
{

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);

        String tstr = scan.nextLine();
        int t = Integer.parseInt(tstr);
        String[] time = new String[t];

        int tmpint = 0;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < t; i++)
        {
            // 2009/11/07-12:12:12
            time[i] = scan.nextLine();
            // 字符串截取,将整个字符串截取成
            // "11/07" + "/" + "2009" + "-12:12:12" 四部分,再重新组合顺序
            time[i] =
                time[i].substring(5, 10) + time[i].substring(4, 5) + time[i].substring(0, 4) + time[i].substring(10);
            tmpint = Integer.parseInt(time[i].substring(11, 13));
            sb.append(time[i]);
            // 00:00:00改为12:00:00am
            if (tmpint == 0)
            {
                sb.replace(11, 13, "12");
                sb.append("am");
            }
            // 12点之内后缀am
            else if (tmpint < 12)
            {
                sb.append("am");
            }
            // 12:00:00改为12:00:00pm
            else if (tmpint == 12)
            {
                sb.replace(11, 13, "12");
                sb.append("pm");
            }
            // 12点之后后缀pm
            else
            {
                tmpint = tmpint - 12;
                //tmpint > 9 ? "" + tmpint : "0" + tmpint (<=9前面补0)
                sb.replace(11, 13, tmpint > 9 ? "" + tmpint : "0" + tmpint);
                sb.append("pm");
            }
            time[i] = sb.toString();
            sb.delete(0, sb.length());
        }

        for (String str : time)
        {
            System.out.println(str);
        }

        scan.close();
    }

}

xxw_242422
xxw_242422   2017.01.10 17:47

不懂其他语言的API,Java的话好些一点吧,答题思路如下:
1、获取输入的字符串
2、定义两个SimpleDateForm格式:yyyy/MM/dd-HH:mm:ss和MM/dd/yyyy-hh:mm:ss
3、将字符串通过SimpleDateForm(yyyy/MM/dd-HH:mm:ss)类转化成Java.util.Date类型
4、将Date类型转化成Calendar类型获取小时判断是否大于等于12,得到pm或者am
5、最后将Date通过SimpleDateForm(MM/dd/yyyy-hh:mm:ss)转换成字符串再加上第4步的pa或者am就可以了。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
String time = "1970/01/01-00:01:01";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss");
SimpleDateFormat format2 = new SimpleDateFormat("MM/dd/yyyy-hh:mm:ss");
try {
Date date = format1.parse(time);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String hour = calendar.get(Calendar.HOUR)>=12?"pm":"am";
String time2 = format2.format(date);
System.out.println(time2+hour);
} catch (ParseException e) {
e.printStackTrace();
}
}
}

这里是一个范例,没有写获第一步怎么字符串数组,楼主可以自行添加。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!