JAVA Date

java.util.Date

Date的每一个实例用于表示一个时间点
内部维护了一个long值,保存的是自1970年元旦到该Date表示的时间之间
经过的毫秒
Date存在时区的缺陷所以大部分操作时间的方法都被声明为过时的,不在建议使用了

因此,现在使用Date仅用来表示一个时间
毫秒变天 /1000/60/60/24 long值运算时加L
秒 分 时 天

Date date=new Date();
long time=date.getTime();(获取当前时间的毫秒值,1970年到现在)
date.setTime(0);(设置当前时间的毫秒值)

实现了get set方法以毫秒表示

SimpleDateFormat

java.text.SimpleDateFormat 该类可以将Date与String按照一个指定的日期格式进行互相转换
String format(Date date) 将给定的Date对象按照当前SDF指定的日期格式装换为字符串

y年 M月 d日 H时 m分 s秒 E星期

(获取时间)

		Date date = new Date();
		SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日   HH时mm分ss秒    E");
		String data=simple.format(date);
		System.out.println(data);

将一个String通过SDF解析为一个Date

(设置时间)
	String str="2088-08-08 20:08:08";
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	/*
	* Date parse(String str)
	* 将给定的字符串按照当前SDF指定的格式解析为Date,如果给定的String格式与SDF格式不匹配时会抛出解析异常
	*/
	Date date=sdf.parse(str);
	System.out.println(date);

Calendar

java.util.Calendar 日历类

Calendar可以操作时间,是很常用的时间API

实现类:java.util.GregorianCalender 即:阳历
Calendar提供了静态方法getInstance来根据系统所在地区获取一个对应实现类
大部分获取的都是阳历

	    //日历类默认获取后表示的也是当前系统的时间
		Calendar calendar=Calendar.getInstance();

		//Calendar提供getTime,可以将当前Calendar表示的日期以Date形式返回
		Date date=calendar.getTime();

		//Calendar提供的setTime方法允许将当前Calendar表示的时间调整为给定的Date所表示的时间
		calendar.setTime(date);

Calendar提供了方法:
int get(int field)
可以根据给定的时间分量获取对应的值

 不同的时间分量用不同的int值表示,Calendar提供了对应的常量
		//获取年
		int year=calendar.get(Calendar.YEAR);
		//获取月(月是从0开始的)
		int month=calendar.get(Calendar.MONTH)+1;
		//获取日
		/*
		 * 获取日
		 * 和“天”相关的常量
		 * DAY_OF_MONTH:月中的天
		 * DAY_OF_WEEK:周中的天
		 * DAY_OF_YEAR:年中的天
		 * DATE:与DAY_OF_MONTH一致
		 */
		int day=calendar.get(Calendar.DATE);
		System.out.println(year+"-"+month+"-"+day);
		
		int h=calendar.get(Calendar.HOUR_OF_DAY);
		int m=calendar.get(Calendar.MINUTE);
		int s=calendar.get(Calendar.SECOND);
		System.out.println(h+"-"+m+"-"+s);
		
		//一周的第一天是星期日
		int dow=calendar.get(Calendar.DAY_OF_WEEK)-1;
		String[] data= {"日","一","二","三","四","五","六"};
		System.out.println("星期"+data[dow]);
		
		int days=calendar.get(Calendar.DAY_OF_YEAR);
		System.out.println("今天是今年的第"+days+"天");
		
		//获取给定的时间分量所允许的最大值
		days=calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println(days);

void set(int field,int value)
调整当前Calendar指定时间分量为给定的值

/ /调整年
		calendar.set(Calendar.YEAR, 2018);
		//调整月
		calendar.set(Calendar.MONTH, Calendar.AUGUST);

		//调整为当周的周五
		calendar.set(Calendar.DAY_OF_WEEK, 6);


void add(int field,int amount) 对指定的时间分量加上给定的值,若给定的值为负数则是减去操作

		//加3年2月25天,查看周五
		//加年
		calendar.add(Calendar.YEAR, 3);
		//加月
		calendar.add(Calendar.MONTH, 2);
		//加日
		calendar.add(Calendar.DAY_OF_YEAR, 25);

综合练习:

package date;


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

/**
 * 计算商品促销日期
 * 程序启动后,输入商品的生产日期,格式:yyyy-MM-dd
 * 然后在输入一个整数位保质期的天数
 * 然后经过计算输出该商品促销日期,格式同上
 * 
 * 促销日计算规则:商品过期日前两周的周三
 * @author 秋水浮萍
 *
 */
public class Test2 {
	public static void main(String[] args) throws ParseException {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入生产日期:");
		
		String birth=sc.nextLine();
		System.out.println("请输入过期时间:");
		int dead=sc.nextInt();
		
		Calendar calendar=Calendar.getInstance();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date date=sdf.parse(birth);
		calendar.setTime(date);
		
		calendar.add(Calendar.DAY_OF_YEAR,dead );
		calendar.add(Calendar.WEEK_OF_YEAR, -2);
		calendar.set(Calendar.DAY_OF_WEEK, 4);
		System.out.println(calendar.getTime());
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中,可以使用`LocalDateTime`类来处理日期和时间,而`Date`类则提供了表示特定日期和时间的方法。要将`Date`对象转换为`LocalDateTime`对象,可以使用Java 8中的`ZonedDateTime`类和`Instant`类。 以下是将Java `Date`对象转换为`LocalDateTime`对象的步骤: 1. 首先,将Java `Date`对象转换为`Instant`对象。可以使用Java 8中的`Instant.ofEpochMilli()`方法来完成此操作。 ```java Date date = new Date(); Instant instant = Instant.ofEpochMilli(date.getTime()); ``` 2. 然后,使用`ZonedDateTime.ofInstant()`方法将`Instant`对象转换为`ZonedDateTime`对象。该方法需要指定时区信息。 ```java ZoneId zoneId = ZoneId.of("UTC"); // 根据需要指定时区 ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zoneId); ``` 3. 最后,可以使用`ZonedDateTime.toLocalDateTime()`方法将`ZonedDateTime`对象转换为`LocalDateTime`对象。 ```java LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); ``` 完整的示例代码如下所示: ```java import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; public class DateToLocalDateTime { public static void main(String[] args) { // 创建 Date 对象 Date date = new Date(); // 将 Date 对象转换为 Instant 对象 Instant instant = Instant.ofEpochMilli(date.getTime()); // 将 Instant 对象转换为 ZonedDateTime 对象并指定时区 ZoneId zoneId = ZoneId.of("UTC"); // 根据需要指定时区 ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zoneId); // 将 ZonedDateTime 对象转换为 LocalDateTime 对象 LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); // 输出 LocalDateTime 对象 System.out.println(localDateTime); } } ``` 请注意,上述代码中的时区信息是示例性的,您需要根据实际情况进行更改。此外,还可以使用其他方法来处理日期和时间,例如使用Java 8中的新日期和时间API(如`java.time.*`包中的类)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值