利用类对象计算日期(java实训)

本文介绍了在Java开发中如何使用SimpleDateFormat将字符串日期转换为Date对象,并通过时间戳计算来判断当前日期与活动开始和结束日期的关系。

题目:

在利用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 Xingyuxingxi {
    public static void main(String[] args) throws ParseException {
        Scanner sc=new Scanner(System.in);
        int g= sc.nextInt();
        sc.nextLine();
        for (int i = 0; i < g; i++) {
            String a = sc.nextLine();
            String[] b = a.split(" ");//将时间分成两部分
            SimpleDateFormat s1 = new SimpleDateFormat("\"yyyy-MM-dd");//指定日期格式化
            SimpleDateFormat s2 = new SimpleDateFormat("HH:mm:ss\"");//指定时间格式化
            Date date1 = s1.parse(b[1]);//将字符串转化为相应日期类型
            Date date2 = s2.parse(b[2]);
            Date date3 = s1.parse(b[3]);
            Date date4 = s2.parse(b[4]);
            long sum = Long.parseLong(b[0]);//将字符串转化为long型整数
            long sum1 = date1.getTime() + date2.getTime();//获取时间戳毫秒数相加
            long sum2 = date3.getTime() + date4.getTime();
           if(sum<sum1/1000)//转化的时间为毫秒所以要/1000
           {
               System.out.println("Before");
           }
           else if(sum>sum2/1000)
           {
               System.out.println("After");
           }
           else
           {
               System.out.println("NOW");
           }
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星与星熙.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值