我有一个类,在初始化时,它使用公共getter在私有字段中记录初始化时间:
public class TestClass {
private long mTimestamp;
public TestClass(){
mTimestamp = System.getCurrentMillis();
}
public long getTimestamp(){
return mTimestamp;
}
}
我还有一个名为days的枚举:
public enum Days implements Serializable {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
现在问题出在另一个类中,我必须获取时间戳并将一个Days
字段设置为该类初始化的日期:
public class OtherClass {
public Days getDayOfInitialization(TestClass testClass){
//how to do this?
Date date = new Date(testClass.getTimestamp())
Days day = Date.getDay(); //Deprecated!
//convert to enum and return...
}
}
不推荐使用的getDay()
方法Date
...该怎么办?
您不需要将Enum作为日期时间的标准(ISO 8601)将一周定义为星期一至星期日。
Joda-Time用英语为每个星期几名称定义常量,例如DateTimeConstants.MONDAY。
您应该使用Joda-Time库,因为java.util.Date和.Calendar类非常麻烦。据其他人称,Joda-Time在Android系统中工作。
跟踪日期时间(以毫秒为单位)不理想。最好序列化为ISO 8601字符串。但是,如果必须的话,那就这样吧。
时区至关重要。星期几由时区定义,如上面的讨论所述。
如果要使用UTC,则Joda-Time提供常数DateTimeZone.UTC
。
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = new DateTime( millisSinceEpochInUtc, timeZone );
int dayOfWeekNumber = dateTime.getDayOfWeek(); // ISO 8601 standard says Monday is 1.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "EEEE" ).withLocale( java.util.Locale.ENGLISH );
String dayOfWeekName = formatter.print( dateTime );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句