时间⽇期格式转换(Date类)
Problem Description
对于⽇期的常⽤格式,在中国常采⽤格式的是“年年年年/⽉⽉/⽇⽇”或写为英语缩略表⽰的”yyyy/mm/dd”,此次编程竞赛的启动⽇期“2010/11/20”就是符合这种格式的⼀个⽇期,
⽽北美所⽤的⽇期格式则为“⽉⽉/⽇⽇/年年年年”或”mm/dd /yyyy”,如将“2010/11/20”改成这种格式,对应的则是”11/20/2010”。对于时间的格式,则常有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<=20),代表总共需要转换的时间⽇期字符串的数⽬。
接下来的总共T⾏,每⾏都是⼀个需要转换的时间⽇期字符串。
Output
分⾏输出转换之后的结果
Sample Input
2
2010/11/20-12:12:12
1970/01/01-00:01:01
Sample Output
11/20/2010-12:12:12pm
01/01/1970-12:01:01am
Hint
Source
这道题主要考察java中的Date类
考察Date类和String类的转化,先把字符串变为时间类型的变量,然后改变时间类型的变量的值,最后在以字符串的形式输出。
注:我们在做时间格式转换时,主要是对匹配时间格式的模式;另外,英⽂格式的时间转换时需要带上Locale.ENGLISH,否则会转换失败,因为它默认的是本地化的设置,除⾮你的是英⽂的,总之时间转换时需要时间格式与模式保持⼀致。根据这个原理就可以实现将中⽂的am和pm转化为英⽂。
提醒:如果这道题,按照下⾯的代码进⾏提交的话,会出现错误,去掉注释就能提交正确(我也不知道为什么)。
package sdut.acm;
ParseException;
SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
int  t  ;/*控制输⼊的组数*/
t = sc.nextInt()  ;
while(t-->0)
{
String str = sc.next() ;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss") ;
Date date = sdf.parse(str);
SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy-hh:mm:ssaa",Locale.ENGLISH);
String str1 = sdf1.format(date);
System.out.place("AM", "am").replace("PM", "pm"));
}
sc.close() ;
string转date的方法}
}