使用Android和Java 8,如何及时恢复unix时间戳?
例如
我知道我可以使用System.currentTimeMillis() / 1000L
获取当前时间戳(您也可以从新的 java.time 使用Instant.now().getEpochSecond()
,但这需要Android API> 25)。现在,我需要获取偏移量并减去它。我可以使用TimeUnit.Days.toSeconds()
,但如果要减去年份,它没有YEAR单位,我也不想自己弄乱leap年。
有没有简单的方法可以做到这一点?
答案 0 :(得分:5)
尝试使用Calender
获取时间戳。...
2个月后。
Calendar date= Calendar.getInstance();
date.add(Calendar.MONTH, 2);//instead of 2 use -2 value in your case
date.getTimeInMillis();
一天后。
Calendar date= Calendar.getInstance();
date.add(Calendar.DAY_OF_MONTH, 1);//instead of 1 use -1 value in your case
date.getTimeInMillis();
三年后。
Calendar date= Calendar.getInstance();
date.add(Calendar.YEAR, 3);//instead of 3 use -3 value in your case
date.getTimeInMillis();
注意:-使用负值作为追溯日期。
希望它可以解决您的问题。
答案 1 :(得分:3)
long threeYearsAgo = OffsetDateTime.now(ZoneOffset.UTC)
.minusYears(3)
.toEpochSecond();
System.out.println("Three years ago: "
+ NumberFormat.getIntegerInstance().format(threeYearsAgo));
当我刚刚在计算机上运行此命令时,我得到了以下输出:
三年前:1,446,737,905
如果今天恰好是February年的2月29日,我不确定您会得到什么。大概是三年前2月28日的同一天。如果需要确定,请查阅文档或尝试一下。
几个月或几天前,使用minusMonths
的{{1}}或minusDays
方法。
新的 java.time …需要Android API> 25
并非如此:java.time已被反向移植。
OffsetDateTime
导入日期和时间类。org.threeten.bp
。OffsetDateTime.minusYears
documentation java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 2 :(得分:0)
long now = System.currentTimeMillis() - 1000;
setMaxDate(now+(1000*60*60*24*3) // 3 days from now
public void showDatedialog() {
DatePickerDialog dpd = new DatePickerDialog(DeliveryProduct.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
c.set(year, month, day);
String date = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
edDate.setText(date);
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
}
}, mYear, mMonth, mDay);
dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
long now = System.currentTimeMillis() - 1000;
//dpd.getDatePicker().setMaxDate(now+(1000*60*60*24*3)); //for 3 days from now
Calendar d = Calendar.getInstance();
d.add(Calendar.MONTH, 1);
// dpd.getDatePicker().setMaxDate(d.getTimeInMillis());
dpd.show();
}
答案 3 :(得分:0)
一年前从当前时间获取unix时间戳。
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
long unixTimestamp = calendar.getTime().getTime() / 1000;
一个月...
calendar.add(Calendar.MONTH, -1);