提前 30 分钟获取 Android Unix Epoch?

Posted

技术标签:

【中文标题】提前 30 分钟获取 Android Unix Epoch?【英文标题】:Get Android Unix Epoch 30 Minutes Before Now? 【发布时间】:2015-03-06 08:42:23 【问题描述】:

我了解您可以使用以下代码在 android 应用程序中以毫秒为单位获取 Unix 纪元:

System.currentTimeMillis()

因此,您将如何获得 30 分钟前的值?

【问题讨论】:

只需减去 30 分钟,30*60*1000 【参考方案1】:

考虑使用数学。一秒有1000毫秒,一分钟有60秒。因此:

System.currentTimeMillis() - 30 * 60 * 1000

【讨论】:

【参考方案2】:

java.time

使用现代日期时间 API java.time,您无需自己执行任何计算即可完成。

演示:

import java.time.Instant;
import java.time.temporal.ChronoUnit;

public class Main 
    public static void main(String[] args) 
        long millisNow = System.currentTimeMillis();
        Instant instantNow = Instant.ofEpochMilli(millisNow);
        Instant instant30MinsAgo = instantNow.minus(30, ChronoUnit.MINUTES);
        long millis30MinsAgo = instant30MinsAgo.toEpochMilli();
        // System.out.println(millis30MinsAgo);

        // In a single command
        long millisThrityMinsAgo = Instant.ofEpochMilli(System.currentTimeMillis())
                                    .minus(30, ChronoUnit.MINUTES)
                                    .toEpochMilli();
        
        // System.out.println(millisThrityMinsAgo);
    

使用下面的代码,可以不使用System.currentTimeMillis()获取当前瞬间:

Instant.now()

因此,您还可以使用以下代码获取 30 分钟前的 Unix 纪元毫秒数:

Instant.now().minus(30, ChronoUnit.MINUTES).toEpochMilli()

Trail: Date Time了解更多关于java.timemodern date-time API*的信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 和 7 . 如果您正在为一个 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。

【讨论】:

以上是关于提前 30 分钟获取 Android Unix Epoch?的主要内容,如果未能解决你的问题,请参考以下文章

Spark - 30 分钟通用窗口化

如何判断文件是否超过/ bin / sh 30分钟?

Unix命令行:如何获取最近30天修改文件的总大小

日活上百万时,腾讯产品如何提前规避服务器宕机风险?

Android O,后台服务运行超过 30 分钟。为啥?

实习处理时间