当前位置: 代码迷 >> 综合 >> Hust oj 1177 Time Transform(字符串)
  详细解决方案

Hust oj 1177 Time Transform(字符串)

热度:66   发布时间:2023-12-22 04:44:37.0
Time Transform
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 289(124 users) Total Accepted: 124(109 users) Rating:  Special Judge: No
Description

中国采用的日期格式通常为“年年年年/月月/日日”(yyyy/mm/dd),而西方所用的日期格式通常为“月月/日日/年年年年”(mm/dd/yyyy)。

另一方面,对小时的统计国际上也分为“24小时制”和“12小时制”。对于“12小时制”,使用am和pm区分上午和下午。


现在要求是,将时间由“年年年年/月月/日日”+"24小时制"的形式转换为“月月/日日/年年年年”+“12小时制”的形式。

特别规定:12:00:00pm代表中午12点,12:00:00am代表凌晨12点。

Input
第一行为一个整数T(T<=10),表示测试用例数目。 
接下来的T行,每行都是一个需要转换的时间日期字符串。
Output
对于每个测试用例,输出结果,一行一个。
Sample Input
2
2010/12/07-12:12:12
1988/01/01-00:01:01
Sample Output
12/07/2010-12:12:12pm
01/01/1988-12:01:01am
用字符串模拟
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
char a[1005];
int main()
{int t;scanf("%d",&t);while(t--){scanf("%s",a);int flag = 0;int hour = (a[11]-'0')*10+(a[12]-'0');if(hour == 12 || hour == 0){if(a[14] - '0' > 0 && a[15] -'0' > 0)flag = 1;a[11] = '1';a[12] = '2';}if(hour > 12){flag = 1;a[11] = ((a[11] - '0') - 1) + '0';a[12] = ((a[12] - '0') - 2) + '0';}printf("%c%c/%c%c/%c%c%c%c-%c%c:%c%c:%c%c",a[5],a[6],a[8],a[9],a[0],a[1],a[2],a[3],a[11],a[12],a[14],a[15],a[17],a[18]);if(flag == 1)printf("pm\n");elseprintf("am\n");}return 0;
}


  相关解决方案