2017-10-16 74 views
0

我的应用程序有一个0 - 120分钟的选择器。我想显示这样的时间:“在......分钟”。如何在DateUtils中强制分钟#getRelativeTimeSpanString(long,long,long)?

我找到了方法DateUtils#getRelativeTimeSpanString(long, long, long),它可以在60分钟以下的值下正常工作。但是,如果值为60分钟或更高,则将其显示为“1小时内”而不是“120分钟内”。

这是代码我使用:

int minutes = 70; 
long millis = minutes * 60 * 1000; 
String text = DateUtils.getRelativeTimeSpanString(millis, 0L, DateUtils.MINUTE_IN_MILLIS); 
myTextView.setText(text); // Displays "In 1 hour" instead of "In 70 minutes". 

我怎么能强制输出在几分钟?

+0

您也可以尝试使用字符串资源并计算分钟来达到你想要的。 –

+0

好吧,也许有一种方法可以用java做到这一点,但是为什么在你已经有几分钟的时候使用'getRelativeTimeSpanString'呢? – Ibrahim

+0

@GabrielCosta如果可能的话,我想使用默认的Android字符串,因为它们已经被翻译过了。 –

回答

0

根据注释,您可以使用字符串资源。首先,创建一个多个资源,以支持“在1分”和“在2分”:

<plurals name="time_remaining_in_minutes"> 
     <item quantity="one">In %1$d minute</item> 
     <item quantity="other">In %1$d minutes</item> 
</plurals> 

然后,把它叫做你的代码中:

int minutes = 70; 
long millis = minutes * 60 * 1000; 
String text = getResources.getQuantityString(R.plurals.time_remaining_in_minutes, minutes, minutes); 
myTextView.setText(text); 
+0

我知道这是可能的,但正如我对您的回复评论,我想使用默认的Android字符串。 (他们已经翻译成多种语言)。 –

+0

对不起,我误解了你的答案。我以为你的意思是Android字符串的字符串资源。那么,如果这是值得的,你可以为其他语言创建strings.xml文件(手动)。 –