我尝试在Google电子表格中添加日期。要添加日期,我们在epoch中有转换日期。
For Spreadsheet epoch
Google表格使用电子表格中常用的纪元日期形式。值的整数部分(小数点左边)计算自1899年12月30日以来的天数。小数部分(小数点右侧)将时间计算为一天的一小部分。例如,1900年1月1日中午将是2.5,2,因为它是在1899年12月30日之后的两天,而.5因为中午是半天。 1900年2月1日下午3点将是33.625。
我们使用Joda time API进行计算。(我们的JDK版本1.7)。
对于整数,我们使用以下代码。
public static double getEpochDate(Date inputDate)
{
MutableDateTime epoch = new MutableDateTime();
epoch.setTime(0, 0, 0, 0);
epoch.setDate(1899,12,30); //Set to Epoch time
System.out.println(epoch);
DateTime now = new DateTime(inputDate);
Days days = Days.daysBetween(epoch, now);
return Double.valueOf(days.getDays());
}
我们正面临着找到时代号的派系部分的问题
答案 0 :(得分:3)
一种选择是采用“自Unix纪元以来的毫秒”值(例如使用Date.getTime()
),将其偏移以获得“自Sheets纪元以来的毫秒数”,然后执行24小时的浮点除法。像这样:
// Precomputed difference between the Unix epoch and the Sheets epoch.
private static final long SHEETS_EPOCH_DIFFERENCE = -2209161600000L;
public static double getEpochDate(Date date)
{
long millisSinceUnixEpoch = date.getTime();
long millisSinceSheetsEpoch = millisSinceUnixEpoch - SHEETS_EPOCH_DIFFERENCE;
return millisSinceSheetsEpoch / (double) TimeUnit.DAYS.toMillis(1);
}
Joda Time无需参与此案。 (当你做想要使用Joda Time时,我强烈建议避免使用Mutable*
类型。只有在真正涉及时区时才使用DateTime
...)