时区间时间的转换

//时区间时间的转换
#include<stdio.h>
#include<string.h>

int difference(char *zone1,char *zone2)
{
	char zone[32][10]={"UTC","GMT","BST","IST","WET","WEST","CET","CEST","EET","EEST","MSK","MSD","AST","ADT","NST","NDT","EST","EDT","CST","CDT","MST","MDT","PST","PDT","HST","AKST","AKDT","AEST","AEDT","ACST","ACDT","AWST"};
	float time[32]={0,0,1,1,0,1,1,2,2,3,3,4,-4,-3,-3.5,-2.5,-5,-4,-6,-5,-7,-6,-8,-7,-10,-9,-8,10,11,9.5,10.5,8};
	int i,j;
	for(i=0;strcmp(zone[i],zone1);i++);
	for(j=0;strcmp(zone[j],zone2);j++);
	return (int)((time[i]-time[j])*60);
}
int main()
{
	int nCases,i;
	scanf("%d",&nCases);
	for(i=0;i<nCases;i++)
	{
		int hours,minute;
		char time[9];
		scanf("%s",time);		
		switch(time[0])
		{
			case 'n':hours=12;
					 minute=0;
					 break;
			case 'm':hours=0;
					 minute=0;
					 break;
			default:sscanf(time,"%d:%d",&hours,&minute);
					hours=hours%12;
					scanf("%s",time);
					if(time[0]=='p') hours+=12;
		}
		char timezone1[5],timezone2[5];
		scanf("%s%s",timezone1,timezone2);
		int newTime;
		newTime=hours*60+minute+difference(timezone2,timezone1);
		if(newTime<0) newTime+=1440;
		newTime%=1440;
		switch(newTime)
		{
			case 0:printf("midnight\n");
			break;
			case 720:printf("noon\n");
			break;
			default:
				hours=newTime/60;
				minute=newTime%60;
				if(hours==0)
					printf("12:%02d a.m.\n",minute);
				else if(hours<12)
					printf("%d:%02d a.m.\n",hours,minute);
				else if(hours==12)
					printf("12:%02d p.m.\n",minute);
				else
					printf("%d:%02d p.m.\n",hours%12,minute);
		}
	}
	return 0;
}

转载于:https://www.cnblogs.com/javafly/p/6037194.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值