如何在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)));