java算法_日期类方法及例题(生日日期)

简介: java算法_日期类方法及例题(生日日期)

日期类函数


Date()类

常用方法:Date getTime() 获取当前对象距离某日期的毫秒数

Date setTime(long time)用于设置当前对象的时间为参数指定的毫秒数,距离标准时间


SimpleDate函数

通常使用format()方法将日期转换为字符串,yyyy表示年,MM表示月,dd表示日期,HH表示小时,mm分钟,ss表示秒,也可以使用parse()方法将字符串转换为日期

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
//将某日日期转化为字符串
String str = simpleDateFormat.format(xx);


Calendar类:

常用方法:

Date getTime() 用于将Calendar类型转换为Date类型并返回

static Calendar getInstance():用户获取当前类的引用,不仅能获取当前的时间,还能指定需要获取的时间点

void set(int year,int month,int date,int hourOfDay,int minute,iint second) 根据参数设置年月日,Calendar.DATE是个常量,就是个固定值,永远不变。


例题:生日日期★★

题目描述

CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。

输入

输入有多行,格式为YY MM DD 其中1949<=YY<=2006,日期绝对合法。

输出

输出有多行。即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。

样例输入 1979 4 16 样例输出 2006-9-1


思路:输入给定日期(字符串),有目标天数(10000天),求纪念日期,如果通过分析年月日来计算天数的话,做起来非常麻烦,使用java自带的Date()函数 和 Calendar 类中的方法,很容易就可以解决问题。

首先需要明白的是,我们输入的年月日是字符串,而要通过使用Calendar类中的add()方法,所以需要先声明日期格式,再把输入的数据转换为日期类型,再调用Calendar类中的方法求得现在的时间和10000天以后的纪念时间,日期格式不能被输出,所以需要再把我们求得的纪念日期转换为字符串,最后输出即可

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class fourth {
    public static void main(String[] args) throws ParseException {
        //image
        //创建日期格式
        SimpleDateFormat s1= new SimpleDateFormat("yyyy-MM-dd");
        Scanner s = new Scanner(System.in);
        while(s.hasNext()){
            //输入字符串日期
            int year = s.nextInt();
            int month = s.nextInt();
            int day = s.nextInt();
            //然后将输入的字符串转换为日期格式
            Date date =s1.parse(year+"-"+month+"-"+day);
            //创建Calendar 获取当前的时间
            Calendar now = Calendar.getInstance();
            //设置当前的时间 设置成date
            now.setTime(date);
            //然后给当前时间增加目标天数
            now.add(Calendar.DATE,10000);
            Date date1 = now.getTime();
            String str1 = s1.format(date1);
            String a[] = str1.split("-");
            year= Integer.parseInt(a[0]);
            month =Integer.parseInt(a[1]);
            day=Integer.parseInt(a[2]);
            System.out.println(year+"-"+month+"-"+day);
        }
    }
}
相关文章
|
3天前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
5天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
20 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
3天前
|
Java API
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
|
6天前
|
安全 Java 编译器
JAVA泛型类的使用(二)
接上一篇继续介绍Java泛型的高级特性。3. **编译时类型检查**:尽管运行时发生类型擦除,编译器会在编译阶段进行严格类型检查,并允许通过`extends`关键字对类型参数进行约束,确保类型安全。4. **桥方法**:为保证多态性,编译器会生成桥方法以处理类型擦除带来的问题。5. **运行时获取泛型信息**:虽然泛型信息在运行时被擦除,但可通过反射机制部分恢复这些信息,例如使用`ParameterizedType`来获取泛型参数的实际类型。
|
6天前
|
安全 Java 编译器
JAVA泛型类的使用(一)
Java 泛型类是 JDK 5.0 引入的重要特性,提供编译时类型安全检测,增强代码可读性和可维护性。通过定义泛型类如 `Box&lt;T&gt;`,允许使用类型参数。其核心原理是类型擦除,即编译时将泛型类型替换为边界类型(通常是 Object),确保与旧版本兼容并优化性能。例如,`Box&lt;T&gt;` 编译后变为 `Box&lt;Object&gt;`,从而实现无缝交互和减少内存开销。
|
26天前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
22天前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
55 9
|
27天前
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
60 12
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
200 58
|
6月前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
76 7