题目:
在利用Java语言进行信息系统开发中,经常需要对日期进行计算和转换,比如,设置了某活动的开始日期和结束日期,系统需要判断当前是否是该活动时间,在Java开发的信息系统中,通常日期以字符串形式“yyyy-MM-dd hh:mm:ss”保存到数据库中,在进行转换中,通常需要将字符串表示的日期转换为Date对象,Java API提供了一个工具SimpleDateFormat对象能将一个满足“yyyy-MM-dd hh:mm:ss”形式的字符串转换成一个Date对象。在日期转换中,经常也利用到时间戳,什么是时间戳(timestamp)?时间戳(timestamp)是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。通过日期对象的getTime()将获得该日期的当前时间戳的毫米数。
给你的问题是,如何给出某活动的开始日期和结束日期,已经当前日期的时间戳,需要你编程判定当前日期所处的位置.
样例输入:
输入的第一行为已个正整数N,表示需要你计算活动次数,接下来的N行,每行的第一个数为一个10位正整数,表示当前日期的时间戳秒数,接下来是两个字符串,表示活动开始日期和结束日期。字符串满足日期“yyyy-MM-dd hh:mm:ss”格式。
样例输出:
如果当前日期在活动开始之前,就输出“Before",如果在活动之中输出"NOW", 如果在活动之后,输出"After".
测试输入数据:
2
1389339888 "2013-10-11 12:12:12" "2013-10-12 12:12:12"
1389339888 "2014-01-09 12:12:12" "2014-01-12 12:12:12"
测试输出数据:
After
NOW
代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String q = sc.nextLine();
while (n -- > 0){
String str = sc.nextLine();
String[] a = new String[3];
a[0] = str.substring(0,10);
a[1] = str.substring(12,31);
a[2] = str.substring(34,str.length()-1);
//定义日期or时间格式模板
String pat = "yyyy-MM-dd hh:mm:ss";
//创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat(pat);
//使用SimpleDateFormat对象的purse()方法将字符串格式化为Date对象
Date time1 = sdf.parse(a[1]);
Date time2 = sdf.parse(a[2]);
long time = Long.parseLong(a[0])*1000;
//获取时间戳
long time_begin = time1.getTime();
long time_end = time2.getTime();
if (time < time_begin){
System.out.println("Before");
}else if (time < time_end){
System.out.println("NOW");
}else System.out.println("After");
}
}
}