currentTimeMillis() 转换为年、天和分钟,以及反向转换(困难)

6
我需要将System.currentTimeMillis()转换为3个变量:
int Years;
int DaysMonths;
int MinutesHours;

我所说的DayMonthsMinutesHours是指,比方说我们有两个小时。那么MinutesHours应该等于120(因为2个小时=120分钟)。但是一旦到达24小时,它应该变成0并传递给DaysMonths
对于DaysMonths变量也是如此。
而且我还需要知道如何将这个过程反转。使用这3个变量,我需要另一个方法从中获取System.currentTimeMillis()
我很难解释清楚,但我希望您知道我的意思。我真的很讨厌在Java中处理时间。这不是我的强项,但我非常需要它来完成一个游戏项目。

2
http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html - Brian Roach
1
Brian,你读了吗?我的意思是小时和分钟应该混合在一个变量中,你提供的链接上没有这方面的信息,所以没必要给出负面反馈。 - Reacen
1
@Reacen:如果你已经有了各个值并且理解了日历,那么将它们组合起来并不是很难:minutesHours = hours * 60 + minutes 等等...在提问之前你尝试了多少次呢?我个人建议使用Joda Time而不是java.util.Calendar,注意一下... - Jon Skeet
1
@Reacen "避免数学问题?"...因为用循环做会更容易吗? - Dave Newton
1
无数学,无编程技能。 - bestsss
显示剩余9条评论
2个回答

17
创建一个日历对象:
long millis=System.currentTimeMillis();
Calendar c=Calendar.getInstance();
c.setTimeInMillis(millis);

接下来,您可以从日历对象中获取字段:

int hours=c.get(Calendar.HOUR);
int minutes=c.get(Calendar.MINUTE);

那么:

int MinutesHours=(hours*60)+minutes;

要返回,您可以使用Calendar中的set方法:

Calendar c=Calendar.getInstance();
c.set(Calendar.MINUTE,minutes);
long millis=c.getTimeInMillis();

2

请考虑使用这个库。

http://joda-time.sourceforge.net/

它具有许多有用的日期和时间操作函数,非常简单易用!

 DateTime dt = new DateTime(2005, 3, 26, 12, 0, 0, 0);
  DateTime plusPeriod = dt.plus(Period.days(1));
  DateTime plusDuration = dt.plus(new Duration(24L*60L*60L*1000L));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接