【问题标题】:how to get date from milliseconds in android如何从android中的毫秒获取日期
【发布时间】:2012-11-20 00:23:54
【问题描述】:

我有时间在milliseconds,现在我想将timedate 与这些milliseconds分开

我该怎么做???

【问题讨论】:

  • 你能出示你的表格吗?
  • 我在这个答案中找到了最佳解决方案stackoverflow.com/a/7954038/1677835
  • @SergeyPekar 虽然这在当时是一个很好的答案,但它使用的是陈旧且设计不佳的类 DateFormatSimpleDateFormatCalendar。很久没有推荐了。
  • @OleV.V.如您所见,距离我的回答已经过去了 4 年 :-)

标签: android datetime android-date


【解决方案1】:

您可以使用日期格式并将您的毫秒值设置为此构造函数的参数,遵循以下代码:

SimpleDateFormat SDF= new SimpleDateFormat("dd/MM/yyyy"); 
String date = SDF.format(new Date(millies)));

【讨论】:

  • 该问题已经有一个可接受的答案。你的答案也需要教育解释。
【解决方案2】:

java.time 和 ThreeTenABP

我建议 java.time,现代 Java 日期和时间 API,用于您的日期和时间工作:

    long millisecondsSinceEpoch = 1_567_890_123_456L;

    ZonedDateTime dateTime = Instant.ofEpochMilli(millisecondsSinceEpoch)
            .atZone(ZoneId.systemDefault());
    LocalDate date = dateTime.toLocalDate();
    LocalTime time = dateTime.toLocalTime();

    System.out.println("Date: " + date);
    System.out.println("Time: " + time);

在我的时区输出(欧洲/哥本哈根):

Date: 2019-09-07
Time: 23:02:03.456

其他答案中使用的日期和时间类 — CalendarDateSimpleDateFormat — 设计不佳且早已过时。这就是为什么我不推荐使用它们中的任何一个,而是更喜欢 java.time。

问:java.time 不需要 Android API 26 级吗?

java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少 Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 起)中,现代 API 是内置的。
  • 在非 Android 的 Java 6 和 7 中,获取 ThreeTen Backport,这是现代类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从 org.threeten.bp 导入日期和时间类以及子包。

链接

【讨论】:

    【解决方案3】:

    Kiran Kumar 的进一步回答

     public static String getFormattedDateFromTimestamp(long timestampInMilliSeconds, String dateStyle){
            Date date = new Date(); 
            date.setTime(timestampInMilliSeconds);
            String formattedDate=new SimpleDateFormat(dateStyle).format(date);
            return formattedDate;
    }
    

    【讨论】:

      【解决方案4】:

      milliseconds 转换为Date 实例并将其传递给所选的格式化程序:

      SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
      
      String myDate = dateFormat.format(new Date(dateInMillis)));
      

      【讨论】:

        【解决方案5】:

        你可以这样使用

        Calendar cl = Calendar.getInstance();
        cl.setTimeInMillis(milliseconds);  //here your time in miliseconds
        String date = "" + cl.get(Calendar.DAY_OF_MONTH) + ":" + cl.get(Calendar.MONTH) + ":" + cl.get(Calendar.YEAR);
        String time = "" + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND);
        

        【讨论】:

        • 月份显示错误。我们在 4 月,我得到了 3 个。此外,虽然在 2012 年使用 Calendar 是一个好主意,但现在已经不是了。我们在java.time, the modern Java date and time API 中做得更好。
        • 我迟到了,但是对于任何想知道的人来说是的......如果我没记错的话,在日历类中,0 = 一月而不是 1,所以它实际上并没有显示错误的月份。但可以理解的是,这可能会令人困惑。
        【解决方案6】:

        使用Calendar 获取不同时间字段的值:

        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(timeInMillis);
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int monthOfYear = cal.get(Calendar.MONTH);
        

        【讨论】:

          【解决方案7】:

          这个函数会给你一个毫秒的字符串日期

          public static String getFormattedDateFromTimestamp(long timestampInMilliSeconds)
          {
              Date date = new Date(); 
              date.setTime(timestampInMilliSeconds);
              String formattedDate=new SimpleDateFormat("MMM d, yyyy").format(date);
              return formattedDate;
          
          }
          

          【讨论】:

            【解决方案8】:

            您可以将毫秒转换为日期对象,然后以时间字符串和仅日期字符串的格式提取日期

            【讨论】:

            • 我什至不是专门指Date(),但不是,还不是,也不是为了这些目的。不要混淆其他人。
            • 只是setTime 不被弃用。其他方法(大多数)已被弃用。那么为什么要让Date 来设置时间呢?为什么不使用Calnedar class
            • 我没有任何特定课程的议程。但是如果某些方法仍然可以满足我的需要并且显然没有被弃用,我不会把婴儿和洗澡水一起扔出去。
            • 是的,但在 setTime 之后。当他要检索日期时..然后他别无选择^^ 除了使用Calender 类。为什么不收养一个刚出生的婴儿!
            猜你喜欢
            • 2017-02-14
            • 1970-01-01
            • 2013-07-28
            • 2016-07-02
            • 2014-10-12
            • 2017-10-29
            • 1970-01-01
            • 1970-01-01
            • 2013-07-28
            相关资源
            最近更新 更多