Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343590
  • 博文数量: 122
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1191
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 11:12
文章分类

全部博文(122)

文章存档

2010年(122)

我的朋友

分类: C/C++

2010-03-09 20:50:31

 

资源来源:http://blog.chinaunix.net/u3/105033/index.html

 

一、问题描述

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

第一行为一个整数TT<=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

注意中午和凌晨时间的特殊表示

二、分析解答

没什么难的,注意三个地方:

1、凌晨12点算是上午,中午12点算是下午;

2、输入模式,如0203,不是23

312小时进制没有000333这类时候,小时是从1-12的。

三、代码

 

#include <iostream>
#include<string>
using namespace std;
int main()
{

    int n;
    int i;
    string str;
    string year,month,day;
    string hour,minute,second;
    cin>>n;
    for(i=0;i<n;++i)
    {
        cin>>str;
        year=str.substr(0,4);
        month=str.substr(5,2);
        day=str.substr(8,2);

        hour=str.substr(11,2);
        minute=str.substr(14,2);
        second=str.substr(17,2);

        cout<<month<<"/"<<day<<"/"<<year<<"-";


        int ihour=atoi(hour.c_str());
        if(ihour>=12)
        {
            if(ihour==12)
            {
                cout<<ihour<<":"<<minute<<":"<<second<<"pm"<<endl;
                continue;
            }
            if(ihour==24)
            {
                cout<<"12:"<<minute<<":"<<second<<"am"<<endl;
                continue;
            }

            ihour=ihour-12;
            if(ihour>=10)
                cout<<ihour<<":"<<minute<<":"<<second<<"pm"<<endl;
            else
                cout<<"0"<<ihour<<":"<<minute<<":"<<second<<"pm"<<endl;
        
        }
        else//<12

        {
            if(hour.compare("00")==0)
                cout<<"12:"<<minute<<":"<<second<<"am"<<endl;
            else
                cout<<hour<<":"<<minute<<":"<<second<<"am"<<endl;
        }
    }
    return 0;
}


阅读(944) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~