如何将currentTimeMillis转换为可读的日期格式?

80
我想要使用currentTimeMillis两次来计算持续时间,但我也想以用户可读的格式显示日期和时间。我遇到了麻烦,因为currentTimeMillis可以用于计算,但我找不到内置函数来将其转换为漂亮的时间或日期/时间格式。
我使用:
android.text.format.DateFormat df = new android.text.format.DateFormat();
df.format("yyyy-MM-dd kk:mm:ss", new java.util.Date());

用于生成美观的时间和日期,我最终想要做的是将我的 currentTimeMillis 值显示在 android.text.format.DateFormat df = new android.text.format.DateFormat(); 中。

例如:

android.text.format.DateFormat df = currentTimeMillis();

尝试后我得到了:

类型不匹配:无法从long转换为DateFormat

我尝试过一些强制类型转换,但不知道如何完成此操作。

2个回答

188

它会起作用。

long yourmilliseconds = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");    
Date resultdate = new Date(yourmilliseconds);
System.out.println(sdf.format(resultdate));

1
谢谢,我以为会有什么东西,但很可能像在干草堆里找针一样困难!干杯。 - Purplemonkey
谢谢,我一直在处理一个麻烦的问题,试图自己解决,但是将日期可读化使得解决问题变得更加简单。 - Meenohara

49

Android 中有更简单的方法。

 DateFormat.getInstance().format(currentTimeMillis);

此外,Date已经被弃用,因此请使用DateFormat类。

   DateFormat.getDateInstance().format(new Date(0));  
   DateFormat.getDateTimeInstance().format(new Date(0));  
   DateFormat.getTimeInstance().format(new Date(0));  

以上三行将得到:

Dec 31, 1969  
Dec 31, 1969 4:00:00 PM  
4:00:00 PM  12:00:00 AM

当你调用 new Date(0) 时,你难道没有使用一个已弃用的构造函数吗? - SafaOrhan
刚刚检查了一下,我不认为java.util.Date已经过时了。 - amalBit
3
没错,Date(String) 方法已被弃用,而不是 Date(long) 方法。 - SafaOrhan
1
好的,如何将这个结果转换为可读格式,比如 2016 年 8 月 22 日...? - Vasil Valchev
为此,我们有SimpleDateFormat。asish的答案。 - amalBit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接