POJ-3751時間日付フォーマット変換-24時間制/12時間制

1806 ワード

日付書式変換
Time Limit: 1000MS
 
Memory Limit: 65536K
Total Submissions: 7708
 
Accepted: 3600
Description
日付と時刻を表すフォーマットは世界各地にあります.日付の一般的なフォーマットについては、中国では「毎年/月/日」または英語の略語で表される「yyyy/mm/dd」と表記されているが、今回のプログラミングコンテストの開始日「2009/11/07」はこのフォーマットに合致する日付であり、北米では「月月/日/年年」または「mm/dd/yyy」と表記されている.「2009/11/07」をこの形式に変更すると、「11/07/2009」に対応します.時間のフォーマットについては、12時間制と24時間制の表示方法があり、24時間制は0-24で1日の24時間を表し、12時間制は1-12で時間を表し、am/pmを加えて午前または午後を表し、例えば「17:30:00」は24時間制で時間を表し、対応する12時間制の表示方法は「05:30:00 pm」である.注意12:00:00 pmは昼12時、12:00:00 amは午前12時を表します.
「yyy/mm/dd」に24時間(短横線で-」接続)を加えて日付と時間を表す文字列については、プログラミング実装により「mm/dd/yyyy」に12時間形式の文字列を変換します.
Input
第1の動作は、変換を必要とする合計時間日付文字列の数を表す整数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

Hint
正午と未明の特別表示に注意
Source
/*    
*Copyright (c)2015,                  
*All rights reserved.      
*      :       
*    :2015 8 16     
*     :v1.0        
*/
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
int main()
{
    int t,year,month,day,hour,minute,second,h;
    char c1,c2,c3,c4,c5;
    cin>>t;
    while(t--)
    {
        cin>>year>>c1>>month>>c2>>day>>c3>>hour>>c4>>minute>>c5>>second;
        if(hour==0)
            h=12;
        else
            h=(hour>12?hour-12:hour);
        printf("%02d%c%02d%c%d%c%02d%c%02d%c%02d",month,c1,day,c2,year,c3,h,c4,minute,c5,second);
        cout<<(hour>=12?"pm":"am")<<endl;
    }
    return 0;
}