java - 将日期转换为此格式 : "X years, X months, X days..."

标签 java date

我正在创建一个日历实例,并将日期设置为1997 年 7 月 1 日,如下所示:

int currentYear = Calendar.getInstance().get(Calendar.YEAR); 
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(1997, 6, 1);

我想要做的是,在不使用外部库的情况下,从当前日期(例如 2015 年 11 月 1 日 02:45:30)之前的该日期获取以下输出(正确计算闰年/秒会很好,但不是必需的):

18 years, 4 months, 0 days, 2 hours, 45 minutes, 30 seconds

我不太确定这是否可能。我尝试了一些奇怪的、不太符合逻辑的计算,需要大量改进,但无法使其工作:

int years = currentYear - calendar.get(Calendar.YEAR);
int months = calendar.get(Calendar.MONTH);

if(currentMonth > months) {
    years -= 1;
}

更新 - 到目前为止的代码:

Calendar currentDate = Calendar.getInstance();
currentDate.clear();

Calendar birthDate = Calendar.getInstance();
birthDate.clear();
birthDate.set(this.birthYear, this.birthMonth - 1, this.birthDay);

Calendar date = Calendar.getInstance();
date.clear();
date.setTimeInMillis(birthDate.getTimeInMillis() - currentDate.getTimeInMillis());

System.out.println(Integer.toString(date.get(Calendar.YEAR)));

最佳答案

如果您使用的是 java 8,那么您可以使用 LocalDateTime 和 PlainTimeStamp 类

在这里您可以找到一些答案 Java 8: Calculate difference between two LocalDateTime

关于java - 将日期转换为此格式 : "X years, X months, X days...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458470/

相关文章:

java - Java 1.6 中的日历 - 奇怪的结果

java - 单击复选框时显示图像数组列表

Unity3D上的Java插件无法启动新线程

java - 使用蒙特卡罗方法计算 pi java - 计算不起作用

php - 使用 PHP 从 MySQL 打印两个日期之间的 Y-m-d 业务日期列表

java - 为什么 Map 不能使用日期作为键?

java - GWT 中可以有树形网格吗?

java - 将 USB 串行数据解析为可用变量

date - Time::Piece strptime 遇到 %X 问题

php - 将 mysql TIME 从 24 HR 转换为 AM/PM 格式