【问题标题】:Today epoch time irrespective of current time今天纪元时间与当前时间无关
【发布时间】:2014-03-06 10:36:37
【问题描述】:

我正在尝试获取今天日期的纪元时间。但在格式化日期时坚持使用ParseException

片段:-

SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");
String str = df.format(Calendar.getInstance().getTime());
Date date = df.parse(str);
long epoch = date.getTime();
Log.i("Epoch" , String,valueOf(epoch));

如何获得今天的纪元时间?

【问题讨论】:

    标签: java android datetime time java-time


    【解决方案1】:

    如果您只对 1970 年 1 月 1 日 UTC 以来的当前时间(以毫秒为单位)感兴趣,请使用 System.currentTimeMillis()see javadoc。过程中无需格式化和解析字符串。

    要从中获取 unix 纪元时间戳,请将其除以 1000 转换为秒。

    根据 cmets 和您自己的回答,您似乎对某个时区的纪元时间戳感兴趣。为此使用Calendar,也无需在此处格式化和解析字符串:

    Calendar c = Calendar.getInstance(); // today
    c.setTimeZone(TimeZone.getTimeZone("UTC")); // comment out for local system current timezone
    c.set(Calendar.HOUR, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    c.set(Calendar.AM_PM, Calendar.AM);
    long millistamp = c.getTimeInMillis();
    long unixstamp = millistamp / 1000;
    

    【讨论】:

    • 它将给我当前(现在)毫秒。我想要今天的毫秒。
    • 现在就是今天。你想要今天的 UTC 午夜还是别的什么?
    • 用 System.currentTimeInMillis() 尝试过,它将是从 1970 年开始的当前时间到毫秒。
    • 我想要 [今天 00:00:00] 的今天的 Millis。 System.currentTimeinMillis() 将以 MilliSeconds 为单位给出当前时间 [无论当前时间是什么。]
    • 时区:格林威治标准时间 +05:30。
    【解决方案2】:

    获取今天的纪元时间:-

     SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
     String _date = df.format(Calendar.getInstance().getTime());
     Long notificationID = strDateToUnixTimestamp(_date); //Gives Today Epoch Time.
    

     private static long strDateToUnixTimestamp(String dt) {
        DateFormat formatter;
        Date date = null;
        long unixtime;
        formatter = new SimpleDateFormat("dd/MM/yy");
        try {
            date = formatter.parse(dt);
        } catch (ParseException ex) {
    
            ex.printStackTrace();
        }
        unixtime = date.getTime() / 1000L;
        return unixtime;
    }
    

    查看当前米利斯时间与今天米利斯 [日期 00:00:00] 之间的差异。

    Log.i("Notification ID", String.valueOf(notificationID) + ": "+ System.currentTimeMillis()/1000);
    

    发布 SO 和它的答案,因为我用谷歌搜索了几个小时并找到了我正在寻找的东西。希望对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多