日期时间相关操作

 

 

一.Date类的操作getTime(),setTime()——返回long类型
该值表示自1970年1月1日 00:00:00
到当前Date实例所表示的时间之间所经过的毫秒值。

 

 

1.DateDemo

 

package day14;

import java.util.Date;

/**
 * java.util.Date
 * Date的每一个实例用于表示一个确切的时间点。
 * 内部维护一个long值,该值表示自1970年1月1日 00:00:00
 * 到当前Date实例所表示的时间之间所经过的毫秒值。
 * 由于Date存在时区与千年虫问题,所以在JDK1.1版本起,
 * 大部分方法都被声明为过时的。
 * 为此,现在使用Date仅用来表示一个时间,并不对它做其他
 * 操作。
 * @author soft01
 *
 */
public class DateDemo {
	public static void main(String[] args) {
		//默认创建出来即表示当前系统时间
		Date now = new Date();
		System.out.println(now);
		long time = now.getTime();
		System.out.println(time);
		
		//加一天的时间
		time += 1000*60*60*24;
		
		now.setTime(time);
		System.out.println(now);
	/*	程序输出结果如下:
	   Thu Oct 26 14:17:42 CST 2017
		1508998662155
		Fri Oct 27 14:17:42 CST 2017*/
	}
}


二.SimpleDateFormat类的操作:

format(now)——将Date类型的对象转换为不同格式的日期(字符串类型)
parse(str)——将字符串类型的变量转换为Date类型的对象

1.日期格式转换

 

 

 

 

package day14;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java.text.SimpleDateFormat
 * 该类可以将Date与String之间按照一个指定的
 * 日期格式进行互相转换。
 * @author soft01
 *
 */
public class SimpleDateFormat_format {
	public static void main(String[] args) {
		Date now = new Date();
		System.out.println(now);
		
		/*
		 * 2017-10-26 10:25:55
		 * yyyy-MM-dd HH:mm;ss
		 */
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		/*
		 * String format(Date date)
		 * 将给定的Date表示的时间按照当前SDF
		 * 指定的日期格式转换为字符串并返回。
		 */
		String str = sdf.format(now);
		System.out.println(str);
		
		/*程序结果如下:
		Thu Oct 26 14:49:34 CST 2017
		2017-10-26 14:49:34*/
	}
}


2.解析日期格式字符串

 

 

 

 

package day14;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 将字符串按照指定的日期格式解析为Date
 * @author soft01
 *
 */
public class SimpleDateFormat_parse {
	public static void main(String[] args) throws ParseException {
		String str = "2008-08-08 20:08:08";
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = sdf.parse(str);
		System.out.println(date);
		
	    /*程序结果如下:
		Fri Aug 08 20:08:08 CST 2008*/
	}
}


3.练习:输入日期到今天的天数,输入到多少天是什么时候

 

 

 

 

package day14;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * 程序启动后,要求用户输入自己的生日,
 * 格式如:1992-08-02
 * 然后经过计算,显示该用户到今天为止是多少天。
 * @author soft01
 *
 */
public class Test {
	public static void main(String[] args) throws ParseException {
		System.out.println("请输入您的生日:格式如:1994-05-25");
		Scanner scan = new Scanner(System.in);
		String birthStr = scan.nextLine();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date birth = sdf.parse(birthStr);

		Date now = new Date();

		long time = now.getTime() - birth.getTime();
		time = time / 1000 / 60 / 60 / 24;
		System.out.println("你出生到现在已有" + time + "天!");

		int future = scan.nextInt();
		birth.setTime(birth.getTime() + future * 1000l * 60 * 60 * 24);

		String str = sdf.format(birth);
		System.out.println("您出生future天的纪念日为:" + str);
		scan.close();
		/*结果如下:
		请输入您的生日:格式如:1994-05-25
		1994-05-25
		你出生到现在已有8555天!
		10000
		您出生future天的纪念日为:2021-10-10*/
	}
}

 

 

 

4.练习:实现一个电子表功能

 

 

 

 

package day14;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 实现一个电子表功能
 * 每秒钟在控制台输出当前系统时间。
 * 格式如:11:47:55
 * @author soft01
 *
 */
public class Test2 {
	public static void main(String[] args) throws InterruptedException {
		while(true) {
			Date now = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String str = sdf.format(now);
			String time = str.substring(10);
			System.out.println(time);
			Thread.sleep(1000);
		}
	}
}


三.Calendar类的操作:getInstance(),getTime(),setTime()——返回Date类型
获取日相关的常量(int field):月中的天:DATE DAY_OF_MONTH
周中的天:DAY_OF_WEEK 年中的天:DAY_OF_YEAR

get(field)——现在的年月天 getActualMaximum(field)——现在年月天数最大值

set(field,value)——设置年月天时分秒为value值

add(field,amount)——将现在年月日加上amount个年月日

1.创建Calendar实例对象(getInstance()),getTime()和setTime()方法的用法

 

 

 

 

package day14;

import java.util.Calendar;
import java.util.Date;

/**
 * java.util.Calendar
 * 日历类,用于操作时间的类。
 * 
 * 常用实现类:GregorianCalendar,即所谓的“阳历”
 * 
 * Calendar提供了一个静态方法:getInstance,通过
 * 这个方法可以获取一个当前系统所在地区适用的实现类
 * 通常返回的都是阳历历法。
 * @author soft01
 *
 */
public class Calendar_getInstance {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		
		/*
		 * Calendar提供了方法:
		 * Date getTime()
		 * 该方法可以获取当前Calendar所表示的
		 * 时间,并以一个Date形式返回。
		 */
		Date date = calendar.getTime();
		System.out.println(date);
		/*
		 * void setTime(Date date)
		 * 设置当前Calendar表示给定的Date对象
		 * 所表示的时间。
		 */
		calendar.setTime(date);
		
		/*结果如下:
		java.util.GregorianCalendar[......]
		Thu Oct 26 14:47:41 CST 2017*/
	}
}


2.Calendar类中get(field)和getActualMaximum(field)方法的用法

 

 

 

 

package day14;

import java.util.Calendar;

/**
 * Calendar提供了一个方法:
 * int get(int field)
 * 该方法的作用是获取当前Calendar所表示的时间中
 * 给定时间分量所对应的值。
 * 
 * 参数是一个int值,不同的值表示不同的时间分量
 * Calendar提供了大量的常量,来表示不同的时间时间分量
 * @author soft01
 *
 */
public class Calendar_get {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		
		//获取年
		int year = calendar.get(Calendar.YEAR);
		System.out.println(year);
		//获取月 注意:月从零开始
		int month = calendar.get(Calendar.MONTH)+1;
		System.out.println(month);
		
		/*
		 * 获取日
		 * 相关的常量:
		 * DATE				月中的天
		 * DAY_OF_MONTH	月中的天
		 * DAY_OF_WEEK		周中的天
		 * DAY_OF_YEAR		年中的天
		 */
		int day = calendar.get(Calendar.DATE);
		System.out.println(day);
		
		int doy = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println(doy);
		
		int dow = calendar.get(Calendar.DAY_OF_WEEK)-1;
		String[] data = {"日","一","二","三","四","五","六"};
		System.out.println("今天是星期"+data[dow]);
		
		/*
		 * int getActualMaximum(int field)
		 * 获取给定时间分量所允许的最大值,参考
		 * 时间为当前Calendar表示的时间
		 * 
		 * 看看今年共多少天?
		 */
		int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
		System.out.println(year+"年共"+days+"天");
		
		days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(month+"月共"+days+"天");

		/*程序结果如下:
		2017
		10
		26
		299
		今天是星期四
		2017年共365天
		10月共31天*/
	}
}


3.Calendar类中set(field,value)方法的用法

 

 

 

 

package day14;

import java.util.Calendar;

/**
 * void set(int field,int value)
 * 设置当前Calendar表示的时间中指定时间分量
 * 为给定的值。
 * @author soft01
 *
 */
public class Calendar_set {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		//设置年
		calendar.set(Calendar.YEAR, 2008);
		System.out.println(calendar.getTime());
		//设置月
		calendar.set(Calendar.MONTH, Calendar.AUGUST);
		System.out.println(calendar.getTime());
		//设置天
		calendar.set(Calendar.DAY_OF_MONTH, 8);
		calendar.set(Calendar.HOUR_OF_DAY, 20);
		calendar.set(Calendar.MINUTE, 8);
		calendar.set(Calendar.SECOND,8);
		System.out.println(calendar.getTime());
		
		/*
		 * 设置自己出生的那天
		 * 查看那天是星期几,以及那天是那一年的第几天?
		 */
		calendar.set(Calendar.YEAR, 1994);
		calendar.set(Calendar.MONTH, Calendar.JULY);
		calendar.set(Calendar.DAY_OF_MONTH, 3);
		System.out.println(calendar.getTime());
		int dow = calendar.get(Calendar.DAY_OF_WEEK)-1;
		String[] data = {"日","一","二","三","四","五","六"};
		System.out.println("那天是星期"+data[dow]);
		int doy = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("那天是那一年的第"+doy+"天");
		
		/*程序运行结果如下:
		Thu Oct 26 15:59:42 CST 2017
		Sun Oct 26 15:59:42 CST 2008
		Tue Aug 26 15:59:42 CST 2008
		Fri Aug 08 20:08:08 CST 2008
		Sun Jul 03 20:08:08 CST 1994
		那天是星期日
		那天是那一年的第184天*/
	}
}


4.Calendar类中add(field,amount)方法的用法

 

 

 

 

package day14;

import java.util.Calendar;

/**
 * void add(int field,int amount)
 * 使当前Calendar表示的时间中指定时间
 * 分量的值加上给定的值。若amount是个负数,
 * 则是减去。
 * @author soft01
 *
 */
public class Calendar_add {
	public static void main(String[] args) {
		/*
		 * 查看3年后2个月零25天以后所在周的周五的前8天是哪天
		 */
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		
		//加3年
		calendar.add(Calendar.YEAR, 3);
		System.out.println(calendar.getTime());
		
		//加2个月
		calendar.add(Calendar.MONTH, 2);
		System.out.println(calendar.getTime());
		
		//加25天
		calendar.add(Calendar.DAY_OF_YEAR, 25);
		System.out.println(calendar.getTime());
		
		calendar.set(Calendar.DAY_OF_WEEK, 6);
		calendar.add(Calendar.DAY_OF_YEAR, -8);
		System.out.println(calendar.getTime());
		
		/*程序结果如下:
		Thu Oct 26 17:06:08 CST 2017
		Mon Oct 26 17:06:08 CST 2020
		Sat Dec 26 17:06:08 CST 2020
		Wed Jan 20 17:06:08 CST 2021
		Thu Jan 14 17:06:08 CST 2021*/
	}
}


5.练习:求促销日期

 

 

 

 

package day14;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 计算促销日期
 * 促销日期为商品过期日前两周的周三
 * 
 * 程序启动后,要求用户输入一个商品的生产日期,
 * 以及保质期的天数。
 * 然后经过处理后输出该商品的促销日期
 * 
 * 日期格式:yyyy-MM-dd
 * @author soft01
 *
 */
public class Test3 {
	public static void main(String[] args) throws ParseException {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入商品的生产日期:(如:2017-11-01)");
		String birthStr = scan.nextLine();
		System.out.println("请输入保质期的天数:");
		int day = scan.nextInt();
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date birth = sdf.parse(birthStr);
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(birth);
		
		calendar.add(Calendar.DAY_OF_YEAR, day);
		System.out.println(calendar.getTime());
		calendar.set(Calendar.DAY_OF_WEEK, 4);
		calendar.add(Calendar.DAY_OF_YEAR, -14);
		System.out.println(calendar.getTime());
		
		/*结果如下:
		请输入商品的生产日期:(如:2017-11-01)
		2017-11-01
		请输入保质期的天数:
		60
		Sun Dec 31 00:00:00 CST 2017
		Wed Dec 20 00:00:00 CST 2017*/
	}
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

linsa_pursuer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值