首页 / JAVA / Java实现日期时间对象的使用
Java实现日期时间对象的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java实现日期时间对象的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5318字,纯文字阅读大概需要8分钟。
内容图文
![Java实现日期时间对象的使用](/upload/InfoBanner/zyjiaocheng/819/72d17a1fdf774b73ade554009672441a.jpg)
利用类对象计算日期
在利用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()将获得该日期的当前时间戳的毫米数。
将日期字符串转换为Date对象的参考代码如下:
try {
String dateString = "2009-08-02 13:43:00";
DateFormat df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = df.parse(dateString);
} catch(Exception ex) {
}
给你的问题是,如何给出某活动的开始日期和结束日期,已经当前日期的时间戳,需要你编程判定当前日期所处的位置.
样例输入:
输入的第一行为已个正整数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
实训分析:本问题是多测试用例问题,用例数可知,解决一个用例的类型为:
类型名称:DateQuestion
成员变量:
private long tms;
private Data t_begin,t_end;
可用不同的构造方法完成输入的行提取tms和t_begin,t_end。
构造方法1:
public DateQuestion (String s){
//完成输入的行提取tms和t_begin,t_end;
}
构造方法2:
public DateQuestion (long t,String s){
//完成输入的行提取tms和t_begin,t_end;
}
构造方法3:
public DateQuestion (long t,String s1,String s2){
//完成输入的行提取tms和t_begin,t_end;
}
public String getResult(){
//从日期中提取毫秒数(date.getTime()方法),再与tms的大小进行比较,算法比较简单
}
提示:本实训的难度在于从输入行中提取日期数据,方法有多种,建议先读取一个long数据,再读一行,从行字符串中使用”将字符串分成多组,分组方法使用Scanner对象.
方法一:
构造方法public DateQuestion (String s){ }
import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; class DateQuestion { private long tms;// 时间戳秒数 private Date t_begin,t_end; // 开始日期和结束日期 public DateQuestion(String s) { // 完成输入的行提取tms和t_begin,t_end; } tms = Long.parseLong(s.substring(0, 10)); SimpleDateFormat dat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); try { t_begin = dat.parse(s.substring(12, 31)); t_end = dat.parse(s.substring(34, s.length() - 1)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getResult() { // 从日期中提取毫秒数(date.getTime()方法),再与tms的大小进行比较,算法比较简单 Long time_me = tms * 1000; long time_begin = t_begin.getTime(); long time_end = t_end.getTime(); String result; if (time_me < time_begin) result = "Before"; else if (time_me > time_end) result = "After"; else result = "NOW"; return result; } } public class DateTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String s = in.nextLine(); for (int i = 0; i < n; i++) { s = in.nextLine(); DateQuestion date = new DateQuestion(s); System.out.println(date.getResult()); } } }
方法二:构造方法public DateQuestion (long t ,String s){ }
class DateQuestion { private long tms;// 时间戳秒数 private Date t_begin,Date t_end; // 开始日期和结束日期 public DateQuestion(long t,String s) { // 完成输入的行提取tms和t_begin,t_end; String ss[]=s.split("\""); tms = t; try { SimpleDateFormat dat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); t_begin = dat.parse(ss[1]); t_end = dat.parse(ss[3]); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getResult() { // 从日期中提取毫秒数(date.getTime()方法),再与tms的大小进行比较,算法比较简单 Long time_me = tms * 1000; long time_begin = t_begin.getTime(); long time_end = t_end.getTime(); String result; if (time_me < time_begin) result = "Before"; else if (time_me > time_end) result = "After"; else result = "NOW"; return result; } } public class DateTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String s = in.nextLine(); for (int i = 0; i < n; i++) { long t=in.nextLong(); s = in.nextLine(); DateQuestion date = new DateQuestion(t,s); System.out.println(date.getResult()); } } }
方法三:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Scanner; public class p12 { public static void main(String[] args) throws Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(); String s = in.nextLine(); SimpleDateFormat dat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); for (int k = 0; k < n; k++) { String ss[] = new String[3]; s=in.nextLine(); ss[0] = s.substring(0, 10); ss[1] = s.substring(12, 31); ss[2] = s.substring(34, s.length() -1); Long time_me = Long.parseLong(ss[0]) * 1000; long time_begin = dat.parse(ss[1]).getTime(); long time_end = dat.parse(ss[2]).getTime(); if (time_me < time_begin) { System.out.println("Before"); } else if (time_me > time_end) { System.out.println("After"); } else { System.out.println("NOW"); } } } }
内容总结
以上是互联网集市为您收集整理的Java实现日期时间对象的使用全部内容,希望文章能够帮你解决Java实现日期时间对象的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。