微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取自Java中的Epoch以来的天数,周数和月数

如何解决获取自Java中的Epoch以来的天数,周数和月数

|| 我正在尝试获取自Java时代以来的天数,周数,月数。 Java Calendar类提供了诸如calendar.get(GregorianCalendar.DAY_OF_YEAR)或Calendar.get(GregorianCalendar.WEEK_OF_YEAR)之类的东西,这是一个很好的开始,但它并不能完全满足我的需求。 在Java中是否有一种优雅的方法来做到这一点?     

解决方法

        您可以使用Joda Time库轻松完成此操作-除了使用标准的Java Date和Calendar类之外,我将它用于与时间相关的任何事情。看看下面使用该库的示例:
MutableDateTime epoch = new MutableDateTime();
epoch.setDate(0); //Set to Epoch time
DateTime now = new DateTime();

Days days = Days.daysBetween(epoch,now);
Weeks weeks = Weeks.weeksBetween(epoch,now);
Months months = Months.monthsBetween(epoch,now);

System.out.println(\"Days Since Epoch: \" + days.getDays());
System.out.println(\"Weeks Since Epoch: \" + weeks.getWeeks());
System.out.println(\"Months Since Epoch: \" + months.getMonths());
运行此命令时,将得到以下输出:
Days Since Epoch: 15122
Weeks Since Epoch: 2160
Months Since Epoch: 496
    ,        java.time 使用Java 8和更高版本中内置的java.time类。
LocalDate now = LocalDate.now();
LocalDate epoch = LocalDate.ofEpochDay(0);

System.out.println(\"Days: \" + ChronoUnit.DAYS.between(epoch,now));
System.out.println(\"Weeks: \" + ChronoUnit.WEEKS.between(epoch,now));
System.out.println(\"Months: \" + ChronoUnit.MONTHS.between(epoch,now));
输出量
Days: 16857
Weeks: 2408
Months: 553
    ,        
Long currentMilli = System.currentTimeMillis();
Long seconds = currentMilli / 1000;
Long minutes = seconds / 60;
Long hours = minutes / 60;
Long days = hours / 24;
System.out.println(\"Days since epoch : \"  + days);
要么
System.out.println(\"Days since epoch : \"  + ((int) currentMilli / 86400000));
    ,        我几乎对所有答案实际上都在计算actually6ѭ和
now
之间的天感到惊讶。使用
java.time.LocalDate
就像这样简单:
LocalDate.now().toEpochDay()
    ,        
Date.getTime()
-返回自此Date对象表示的1970年1月1日格林尼治标准时间00:00:00以来的毫秒数。 您可以使用此信息,并了解要进行计算的时间间隔中的毫秒数。     ,        
Calendar now = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0); // start at EPOCH

int days = 0
while (cal.getTimeInMillis() < now.getTimeInMillis()) {
  days += 1
  cal.add(Calendar.DAY_OF_MONTH,1) // increment one day at a time
}
System.out.println(\"Days since EPOCH = \" + days);
    ,        我不希望有一种优雅的方法,因为它不是很常见的要求。我忍不住想知道为什么要这么做... 但是无论如何,我要做的是从
Calendar
中减去纪元日期,然后得到想要的字段:
Calendar timeSinceEpoch = Calendar.getInstance();
timeSinceEpoch.add(Calendar.YEAR,-1970);

int yearsSinceEpoch = timeSinceEpoch.get(Calendar.YEAR);
int monthsSinceEpoch = timeSinceEpoch.get(Calendar.MONTH) + 12 * yearsSinceEpoch;
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。