所以我有这个代码...
SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:minutes");
poaTimeDataText.setText(timeFormatter.format(getIntent().getLongExtra(
ShiftLogsFragment.EXTRA_POA_TIME, 0)));
现在我不想显示例如02:40,而是希望它显示为2小时40分钟。但是,我尝试过将模式更改为"HH hours mm minutes"
,但是编译器不喜欢这样。如何获得理想的结果?
编辑:如果它考虑单数或复数形式,例如小时或小时,分钟(如果为0或1)或分钟(如果为2或更多),那将是很好的选择
答案 0 :(得分:0)
我建议将strings.xml
与SimpleDateFormat
一起使用。这将使您在翻译的过程中更具灵活性。
首先,将其添加到您的strings.xml
。
<string name="hours">%1$s Hours %2$s Minutes</string>
现在,当您获取此String
时,您可以插入值。
Long hours = 3;
Long minutes = 55;
SimpleDateFormat hourFormatter = new SimpleDateFormat("HH");
SimpleDateFormat minuteFormatter = new SimpleDateFormat("mm");
String text = getString(R.string.hours,
hourFormattter.format(hours),
minuteFormatter.format(minutes)); // 03 Hours 55 Minutes
poaTimeDataText.setText(text);
如果您决定添加翻译,更改措辞,则可以直接在strings.xml
中添加更多内容,而不必更新此代码。
答案 1 :(得分:0)
创建一个String变量,并像这样将字符串分配给它
String myString = timeFormatter.format(getIntent().getLongExtra(ShiftLogsFragment.EXTRA_POA_TIME, 0))
然后像这样分割字符串
String[] separated = myString.split(":");
现在您每个人都有一个变量
separated[0]; // this will contain "hours"
separated[1]; // this will contain "minutes"
定义两个变量
String hours = "";
String minutes = "";
进行一些测试
if (separated[0].equals("0") || separated[0].equals("1")) {
hours = "hour";
} else {
hours = "hours";
}
if (separated[1].equals("0") || separated[1].equals("1")) {
minutes = "minute";
} else {
minutes = "minutes";
}
最后将此字符串设置为您的textView
poaTimeDataText.setText(separated[0] + hours + separated[1] + minutes);