在java

时间:2016-09-19 13:19:47

标签: java

以下程序代码显示了如何格式化的示例;字符串为和基于类java.text.MessageFormat的数值。请参阅说明类,然后调整日期格式rrrr-mm-dd的方式。

这是代码:

import java.text.MessageFormat;
import java.util.Date;



public class FormattingResults {

public static void main(String[] args){

String s;

Date now = new Date();

String place = "Kraków";

int mile = 1852;

double tax = 0.22;
double price = 31560.76;

s = MessageFormat.format("{0}, {1,date,full}, time. {1,time,short}",
place, now);
System.out.println(s);

s = MessageFormat.format("{0}kB to {1}B", 256,256*1024);
System.out.println(s);

s = MessageFormat.format("{0} x {0} x {0} = {1}", 7, 7*7*7);
System.out.println(s);

s = MessageFormat.format("{0,number,currency} + tax({1,number,percent})",
price, tax);

System.out.println(s);

s = MessageFormat.format("{0} {1} it's approximately {2}m", 1,
"nautical mile", mile);
System.out.println(s);
}
}

一般来说,我不理解这段代码,有人可以帮我解决一个非常简单的任务,例如:

"("{0}, {1,date,full}, time. {1,time,short}",

我阅读了oracle文档,但是sill不知道它是如何工作的。

2 个答案:

答案 0 :(得分:0)

当我运行你的程序时,打印出该行:

Kraków, Monday, September 19, 2016, time. 3:52 PM

接下来,我将计算机的语言改为丹麦语并再次运行。这次我得到了:

Kraków, 19. september 2016, time. 15:54

除了两分钟过后,您会注意到日期和时间现在用丹麦语和格式打印,而在此之前是英语。这就是MessageFormat.format()的作用:找到计算机的区域设置并将它们应用于输入。

答案 1 :(得分:0)

MessageFormat使用当前的Locale格式化日期。

现在,如果你想改变这种格式,你必须使用FormatStyle参数(第三个);

支持的值实际上是短,中,长,完整远日期。或者您可以使用自定义模式。

!Collections.disjoint(list1, list2);