我在Java中有一个日期对象存储为Java的日期类型.

我还有一个公历创建日期.公历日期没有参数,因此是今天日期(和时间?)的一个实例.

使用java date,我希望能够从java date类型获取年、月、日、小时、分钟和秒,并比较gregoriancalendar日期.

我看到目前Java日期存储为long,唯一可用的方法似乎只是将long作为格式化的日期字符串写入.有没有办法访问年、月、日等?

我看到Date类的getYear()getMonth()等方法已被弃用.我想知道使用GregorianCalendar日期的Java Date实例的最佳实践是什么.

我的最终目标是进行日期计算,这样我就可以判断Java日期与今天的日期和时间是否在这么多小时、分钟等范围内.

我还是Java的新手,对此我有点困惑.

推荐答案

使用类似于:

Date date; // your date
// Choose time zone in which you want to interpret your Date
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris"));
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
// etc.

注意,月份从0开始,而不是1.

Edit:从Java8开始,最好使用java.time.LocalDate而不是java.util.Calendar.有关操作方法,请参见this answer.

Java相关问答推荐

Proguard配置以保留具有参数的注释的成员

Java字符串常数池困惑

AlarmManager没有在正确的时间发送alert

将数组整体转换为链接表

上下文初始化期间遇到异常-使用Java配置配置HibernateTemplate Bean时

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

只需最少的代码更改即可将版本号标记添加到日志(log)

具有阻塞方法的开源库是否应该为执行提供异步选项?

由于 list 中的权限错误,Android未生成

如何在EXCEL单元格中添加形状和文本

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

为什么同步数据块无效?

在学习Spring时,通过构造函数参数0表达了不满意的依赖关系

在Java中将int[]矩阵添加到ArrayList中,但出现错误

有没有可能在时间范围内得到多种解决方案?

将ByteBuffer异步写入InputStream或Channel或类似对象

在Spring Boot应用程序中,server.port=0的默认端口范围是多少?

没有Tomcat,IntelliJ如何在本地运行API?

如何在ApacheHttpClient 5中为单个请求设置代理?

如何以事务方式向ibmmq发送消息