获取 3 年后的 unix 时间戳

Get unix timestamp exactly 3 years from now

使用Android和Java 8、如何及时获取unix时间戳?

例如

我知道我可以使用 System.currentTimeMillis() / 1000L 获取当前时间戳(您也可以使用新的 java.time 中的 Instant.now().getEpochSecond(),但这需要Android API > 25)。现在我需要抵消并减去它。我可以使用 TimeUnit.Days.toSeconds(),但如果我想减去年份,它没有 YEAR 单位,我不想自己弄乱闰年。

有没有简单的方法可以做到这一点?

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();

    }

尝试使用 Calender 获取时间戳...

For After 2 month.

    Calendar date= Calendar.getInstance();
    date.add(Calendar.MONTH, 2);//instead of 2 use -2 value in your case
    date.getTimeInMillis();

For after one day.

    Calendar date= Calendar.getInstance();
    date.add(Calendar.DAY_OF_MONTH, 1);//instead of 1 use -1 value in your case
    date.getTimeInMillis();

For after 3 years.

    Calendar date= Calendar.getInstance();
    date.add(Calendar.YEAR, 3);//instead of 3 use -3 value in your case
    date.getTimeInMillis();

注意:- 对回溯日期使用负值。

希望它能解决您的问题。

从当前时间获取一年前的 unix 时间戳。

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
long unixTimestamp = calendar.getTime().getTime() / 1000;

一个月...

calendar.add(Calendar.MONTH, -1);

java.time 和 ThreeTenABP

    long threeYearsAgo = OffsetDateTime.now(ZoneOffset.UTC)
            .minusYears(3)
            .toEpochSecond();
    System.out.println("Three years ago: " 
            + NumberFormat.getIntegerInstance().format(threeYearsAgo));

当我 运行 刚才在我的电脑上时,我得到了这个输出:

Three years ago: 1,446,737,905

如果今天恰好是闰年的 2 月 29 日,我不完全确定你会得到什么;大概是三年前 2 月 28 日的同一时间。如果您需要确定,请查看文档或尝试一下。

几个月或几天前使用 OffsetDateTimeminusMonthsminusDays 方法。

the new java.time … requires Android API > 25

不完全是:java.time 已向后移植。

  • 在 Java 8 和更新的 Android 设备上(从 API 级别 26)内置现代 API。
  • 在 Java 6 和 7 中获取 ThreeTen Backport,新 类 的 backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 类。

链接