Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中从毫秒中获取日期_Android_Datetime_Android Date - Fatal编程技术网

如何在android中从毫秒中获取日期

如何在android中从毫秒中获取日期,android,datetime,android-date,Android,Datetime,Android Date,我的时间单位是毫秒,现在我想将时间和日期与这些毫秒分开 我该怎么做呢?您可以将毫秒转换为日期对象,然后以时间字符串和另一个日期字符串的格式提取日期。此函数将为您提供一个以毫秒为单位的字符串日期 public static String getFormattedDateFromTimestamp(long timestampInMilliSeconds) { Date date = new Date(); date.setTime(timestampInMilliSeconds)

我的时间单位是
毫秒
,现在我想
时间
日期
与这些
毫秒
分开


我该怎么做呢?

您可以将毫秒转换为日期对象,然后以时间字符串和另一个日期字符串的格式提取日期。此函数将为您提供一个以毫秒为单位的字符串日期

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

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

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timeInMillis);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int monthOfYear = cal.get(Calendar.MONTH);
你可以这样用

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

毫秒
转换为
日期
实例,并将其传递给所选的格式化程序:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");

String myDate = dateFormat.format(new Date(dateInMillis)));

关于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;
}
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);
我所在时区的输出(欧洲/哥本哈根):

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

问:java.time不需要Android API级别26吗? time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6

  • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
  • 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
  • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
    org.threeten.bp
    导入日期和时间类
链接
  • 解释如何使用java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

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

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

你能展示一下你拥有的表单吗?我在这个答案@SergeyPekar中找到了最好的解决方案,虽然这在当时是一个很好的答案,但它使用了旧的、设计糟糕的类
DateFormat
SimpleDateFormat
Calendar
。“这已经有很长时间没有被推荐了。”@OleV.V。正如你所看到的,我的回答已经过去了4年:-)我甚至不是特别指
Date()
,但不是,现在还不是,也不是为了这些目的。不要混淆其他人。只是
setTime
不受欢迎。不推荐使用其他方法(大多数)。那么,为什么只需要设置时间就可以使用
Date
?为什么不使用
Calnedar类
我没有任何特定类的议程。但是,如果某些方法仍能满足我的需要,而且显然没有遭到反对,那么我不会把孩子和洗澡水一起扔掉。是的,但是在
setTime
之后。当他要检索日期时,他没有其他选择^^^除了使用
日历
类。为什么不领养一个新生儿呢!这是一个错误的月份。我们在四月份,我得到3分。此外,虽然使用日历在2012年是个好主意,但现在已经不是了。这个问题已经有了公认的答案。你的答案也需要教育性的解释。
SimpleDateFormat SDF= new SimpleDateFormat("dd/MM/yyyy"); 
String date = SDF.format(new Date(millies)));