JavaSE14

本文介绍Java中使用Calendar类进行日期时间的基本操作,包括日期的增减、获取特定时间单位的值、设置日期时间等,并展示了如何利用SimpleDateFormat进行日期与字符串的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package day14;

import java.util.Calendar;

/**
 * 时间操作
 * void add(int field ,int mount)
 * 指定的时间分量家伙少年宫指定的值,若给定的值是负数则是减去
 * @author 臻冉
 *
 */
public class Calendar_add {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		
		//计算3年2个月零25天所在的周的周一是哪天?
		//加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.add(Calendar.DAY_OF_WEEK, 2);
		System.out.println(calendar.getTime());
		
		
		//自己设置时间可以不用减1,如果是获取时间则需要减1
	}
}

package day14;

import java.util.Calendar;

/**
 * Calendar提供了方法
 * 根据给定的时间分片(各种事件单位)获取对应的值,时间分量是一个int值不需要记忆,
 * Calendar提供了对应的常量
 * @author 臻冉
 *
 */
public class Calendar_get {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		//获取年
		int year = calendar.get(Calendar.YEAR);
		System.out.println(year);
		
		//获取月(从0开始)
		int month = calendar.get(Calendar.MONTH)+1;
		System.out.println(month);
		
		//获取日
		int date = calendar.get(Calendar.DATE);
		System.out.println(date);
		
		//获取时
		int h = calendar.get(Calendar.HOUR_OF_DAY);
		System.out.println(h);
		
		//获取分
		int m = calendar.get(Calendar.MINUTE);
		System.out.println(m);
		//获取以上所有的片段都是从第一个时间分片中获取的
		
		//获取秒
		int s = calendar.get(Calendar.SECOND);
		System.out.println(s);
		
		//获取今年的第几天
		int d = calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println(d);
		
		//获取今天是周几
		int dd = calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(dd);
		
		//查看今年共多少天
		int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
		System.out.println(days);
		
		//查看本月是多少天
		days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(days);
		
		//求一年当中每个月有多少天
		calendar.set(Calendar.YEAR, 2020);
		for(int i=0;i<12;i++){
			calendar.set(Calendar.MONTH, i);
			int cc= calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
			System.out.println((i+1)+"月有"+cc+"天");
		}
		
		
	}
}

package day14;

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

/**
 * 设置指定时间分量所对应的值
 * @author 臻冉
 *
 */
public class Calendar_set {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime());
		//2008-08-08  20:08:08
		//设置年份
		calendar.set(Calendar.YEAR, 2008);
		System.out.println(calendar.get(Calendar.YEAR));
		
		//设置月份
		calendar.set(Calendar.MONTH, 8);
		System.out.println(calendar.get(Calendar.MONTH));
		
		//设置时
		calendar.set(Calendar.HOUR_OF_DAY,8);
		System.out.println(calendar.get(Calendar.HOUR));
		
		//设置分
		calendar.set(Calendar.MINUTE, 8);
		System.out.println(calendar.get(Calendar.MINUTE));
		
		//设置秒
		calendar.set(Calendar.SECOND, 8);
		System.out.println(calendar.get(Calendar.SECOND));
		
		//Calendar-->Date
		Date date = calendar.getTime();
		System.out.println(date);
		
		
		//设置本周的周五
		calendar.set(Calendar.DAY_OF_WEEK, 5);
		//System.out.println(calendar.getTime());
	}
}

package day14;

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

/**
 * java.util.Calendar
 * 日历类
 * Calendar本身是一个抽象类,定义类日历类操作时间的相关方法,其提供了一个静态方法getInstance()
 * 可以根据系统所在地区获取一个适用的实现类,大部分地区获取的是CregorianCalenda
 * @author 臻冉
 *
 */
public class CalendarDemo {
	public static void main(String[] args) {
		//日历默认也表示当前系统时间
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		/*
		 * Calendar可以提供Date之间相互转换
		 * Calendar提供了方法,Date getTime();
		 * 该方法可以将当前Calendar所表示的日期以Date形式返回
		 */
		Date date = calendar.getTime();
		System.out.println(date);
		/*
		 * Date转换为Calendar
		 * Calendar提供了方法:void setTime(Date date)
		 * 使当前Calendar表示给定的Date所表示的日期
		 */
		calendar.setTime(date);
		System.out.println(calendar);
		
	}
}

package day14;

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

/**
 * java.util.Calendar
 * 日历类
 * Calendar本身是一个抽象类,定义类日历类操作时间的相关方法,其提供了一个静态方法getInstance()
 * 可以根据系统所在地区获取一个适用的实现类,大部分地区获取的是CregorianCalenda
 * @author 臻冉
 *
 */
public class CalendarDemo {
	public static void main(String[] args) {
		//日历默认也表示当前系统时间
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		/*
		 * Calendar可以提供Date之间相互转换
		 * Calendar提供了方法,Date getTime();
		 * 该方法可以将当前Calendar所表示的日期以Date形式返回
		 */
		Date date = calendar.getTime();
		System.out.println(date);
		/*
		 * Date转换为Calendar
		 * Calendar提供了方法:void setTime(Date date)
		 * 使当前Calendar表示给定的Date所表示的日期
		 */
		calendar.setTime(date);
		System.out.println(calendar);
		
	}
}

package day14;

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

/**
 * java.util.Calendar
 * 日历类
 * Calendar本身是一个抽象类,定义类日历类操作时间的相关方法,其提供了一个静态方法getInstance()
 * 可以根据系统所在地区获取一个适用的实现类,大部分地区获取的是CregorianCalenda
 * @author 臻冉
 *
 */
public class CalendarDemo {
	public static void main(String[] args) {
		//日历默认也表示当前系统时间
		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar);
		/*
		 * Calendar可以提供Date之间相互转换
		 * Calendar提供了方法,Date getTime();
		 * 该方法可以将当前Calendar所表示的日期以Date形式返回
		 */
		Date date = calendar.getTime();
		System.out.println(date);
		/*
		 * Date转换为Calendar
		 * Calendar提供了方法:void setTime(Date date)
		 * 使当前Calendar表示给定的Date所表示的日期
		 */
		calendar.setTime(date);
		System.out.println(calendar);
		
	}
}

package day14;

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

/**
 * 可以将字符串于Date之间按照指定的日期格式进行相互转换
 * @author 臻冉
 *
 */
public class SimpleDateFormat_format {
	public static void main(String[] args) {
		Date now = new Date();
		System.out.println(now);
		
		/**重点*/
		/*
		 * 2020年07月28日  15:38:21
		 * yyyy年MM月dd   HH:mm:ss
		 */
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
		/*
		 * SimpleDateFormat提供了一个format()方法转换为String类型
		 * 将Date形式转换为字符串形式
		 */
		String str = sdf.format(now);
		System.out.println(str);
		
		
	}
}

package day14;

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

/**
 * 将一个字符串转换为Date
 * @author 臻冉
 *
 */
public class SimpleDateFormat_parse2 {
	public static void main(String[] args) {
		String str = "2021-06-23 16:35:39";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		
		/*
		 * SimpleDateFormat提供了一个方法parse转换为Date形式
		 * 将字符串转换为Date
		 */
		try {
			Date date = sdf.parse(str);//抛异常的形式是因为保证输出形式正确
			System.out.println(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

package day14;

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

/**
 * 程序启动后要求用户输入自己的生日,格式如:1997-09-10
 * 然后通过程序计算,输出到今天为止你一共活力多少天?
 * 再输出,自己生日10000天的纪念日是哪一天
 * 计算自己出生到现在活了多少天
 * @author 臻冉
 *
 */
public class Test {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入您的生日出生年月,格式如:1997-09-10");
		String birth = scanner.nextLine();
		//将字 符串birth转换为Date
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//将指定文本解析为日期对象
		try {
			Date date = sdf.parse(birth);
			//1970-1-1截止到你的生日这一天的毫秒数
			long birthTime = date.getTime();
			//现在当前时间到1970-1-1的毫秒数
			Date now = new Date();
			long nowTime = now.getTime();
			
			//现在当前时间到1970-1-1到 你的生日1970-1-1毫秒数
			long  time = nowTime - birthTime;
			//将毫秒转化为天数
			long days = time/1000/60/60/24;
			System.out.println("从出生到现在一共"+days+"天");
			long  d  = birthTime+(10000L*1000*60*60*24);
			date.setTime(d);
			String str = sdf.format(date);
			System.out.println("生日10000天纪念日"+str+"");
			
			
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		
	}
}

package day14;

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

/**
 * 计算商品促销日期
 * 促销日规则:商品过期前两周(14天)的周三为促销日,
 * 
 * 程序启动以后需要用户输入商品的生产日期,例如:2020-07-30
 * 
 * 输入保质期:如:21
 * @author 臻冉
 *
 */
public class Test2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入商品的生产日期,如(2020-07-30)");
		String pro = scanner.nextLine();
		System.out.println("请输入产品保质期:(21)");
		int day = Integer.parseInt(scanner.nextLine());
		//将字符串形式转换为Date形式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date production = sdf.parse(pro);
			//声明一个Calendar,并给他产品的生产日期
			//将Date形式换为Calendar
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(production);
			//接下来,计算出具体的商品过期的时间
			calendar.add(Calendar.DAY_OF_YEAR, day);
			System.out.println("产品过期时间"+calendar.getTime());
			calendar.add(Calendar.DAY_OF_YEAR, -14);
			System.out.println(calendar.getTime());
			calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
			System.out.println("本产品的促销时间为"+calendar.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		
		
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值