Transferred from 9CBS Friends Blog "Flying Sky" -
Formatting output can be used in C, which is similar to PrintF ("% D% 8.2F / N", 1001, 52.335), but the system.out.println () in Java does not correspond to the corresponding function. To format the output, you must use the classes in the Java.Text package to implement similar operations (if you don't reflect the superiority of object-oriented, it is said that JDK1.5 is ready to make up). Of course, the function of the java.text package is still very powerful. It is strange that many books have not been involved, and who is generally do you have a work all day to see the API?
Note: Because it is very simple here, please refer to the following DEMO program.
Formatting numbers
In the NumberFormat class, we provide us with formatting 4 numbers: integer, decimal, currency, and percentage, through factory methods getNumberinstance, GetNumberintance, getCurrencyInstance, getpercentInstance methods to get the appropriate instance objects. For example, we have to represent RMB 88888.88 yuan with a string, so that you will write:
Numberformat nf = numberformat.getcurrencyinstance ();
System.out.println (NF.Format (88888.88));
Custom formatted numbers
However, for a slightly complex demand, Numberformat is not full, but fortunately, Java also provides custom formatting. To use the DecimalFormat object, you must provide it to provide a formatted mode (Pattern):
String Pattern = ...
DecimalFormat DF = New DecimalFormat (Pattern);
or:
Decimalformat DF = New decimalformat ();
Df. ApplyPattern (Pattern);
Then, you will then call its Format method.
So the key is how this model is defined. There is a pattern of syntax in Javadoc in the DECIMALFORMAT class, but it is difficult to say clearly (I can't tell, huh, huh), please see Demo yourself more. Below is a meanings of some characters in the pattern:
character
meaning
0
One number, this lack is displayed as 0. Use to make up
#
One digit, this lack is not displayed
.
Digital point, don't say more
,
Thousands of separators
E
Scientific notation
%
percentage
Format date
The easiest way to convert the date to a string is to call the Tostring or Tolocalestring method of the Date class:
System.out.println (New Date ());
Output: 2004-8-7 8:16:14. But if we want to make 2 bits of the month and day, don't time, you can't make it feel. Java.Text.dateFormat provides a large number of factory methods: getDateInstance (int style), GetTimeInstance (int ", GetDateTyle, int TimeStyle, etc.). Where Style must be DateFormat.long, DateFormat.Medium, one of DateFormat.short. The DefaultDateFormat method in Demo made a simple experiment.
Custom formatted date:
Similarly, java.text.SIMPLEDATEFORMAT can customize formatting by mode (Pattern):
String Pattern = ... SimpleDateFormat DF = New SimpleDateFormat (Pattern);
or:
SimpleDateFormat DF = New SimpleDateFormat ();
Df. ApplyPattern (Pattern);
Here's a pattern symbolic watch in Javadoc in SimpleDateFormat:
symbol
significance
Legal value
Example
y
Year
Year
1996; 96
M
Month in year
Month
Jul; jul; 07
di
Day in month
Number
10
a
AM / PM MARKER
TEXT
Pm
Hide
Hour in day (0-23)
Number
0
hide
Hour in am / pm (1-12)
Number
12
M
Minute in hour
Number
30
s
SECOND IN Minute
Number
55
S
Millisecond
Number
978
z
Time Zone
General Time Zone
Pacific standard Time; PST; GMT-08: 00
Z
Time Zone
RFC 822 TIME ZONE
-0800
Note that the size of the symbols is different, and the number of symbols can also cause the output to be different. For example, with mm will display 01 in January, and use M will not make up. For year, two YY will only output two years, YYY will output 4 years.
In fact, the above class also provides many other methods, especially for localization, custom formatting, and Parse methods that are converted from strings to the corresponding object, and attach the formatting results to one StringBuffer method (should be used to improve performance).
Finally, a small Demo and output results:
TestFormat.java:
Import java.text. *;
Import java.util. *;
Public class testformat {
Public static void main (String [] args) {
DefaultNumberformat ();
SYSTEM.OUT.Println ();
Customnumberformat ();
SYSTEM.OUT.Println ();
DefaultDateFormat ();
SYSTEM.OUT.Println ();
CustomDateFormat ();
SYSTEM.OUT.Println ();
}
Public static void defaultnumberformat () {
INT I = 123456;
Double x = 882323.23523;
Double P = 0.528;
Double C = 52.83;
Numberformat nf = Numberformat.getInstance ();
System.out.println ("Integer" i "Is Displayed AS" NF.Format (i));
System.out.println ("Double" X "Is Displayed AS" NF.Format (x));
Numberformat nfint = Numberformat.GetintegerInstance ();
System.out.println ("Integer" I "Is Displayed AS" NFINT.FORMAT (i)); Numberformat NFNumber = Numberformat.getNumberinstance ();
System.out.println ("Double" X "Is Displayed AS" NFNumber.Format (x));
Numberformat nfpercent = Numberformat.getPercentInstance ();
System.out.println ("Percent" P "IS Displayed AS" NFpercent.Format (P));
Numberformat nfcurrency = Numberformat.getcurrencyinstance ();
System.out.println ("currency" p "is displayed as" nfcurrency.format (c));
// This is not involved in the corresponding PARSE method
}
Public static void customernumberformat () {
Double x = 1000.0 / 3;
System.out.println ("Default Output IS" X);
PatternPrint ("###, ###. ##", x);
Patternprint ("####. ##", x);
PatternPrint ("####. 00", x);
PatternPrint ("####. 0 #", x);
PatternPrint ("00000. ##", x);
PatternPrint ("$ ###, ###. ##", x);
PatternPrint ("0. ### E0", x);
PatternPrint ("00. ##%", x);
Double y = 23.0012;
System.out.println ("Default Output IS" Y);
PatternPrint ("###, ###. ##", y);
PatternPrint ("####. ##", y);
PatternPrint ("####. 00", y);
PatternPrint ("####. 0 #", y);
Patternprint ("00000. ##", y);
PatternPrint ("$ ###, ###. ##", y);
PatternPrint ("0. ### E0", y);
Patternprint ("00. ##%", y);
}
Public static void patternprint (String Pattern, Double X) {
DecimalFormat DF = New DecimalFormat (Pattern);
System.out.println ("Output for Pattern" Pattern "IS" DF.FORMAT (X));
}
Public static void defaultdateformat () {
Date Date = new date (); system.out.println ("Simple Date" Date.TolocaString ());
DateFormat DF = DateFormat.getDatetimeInstance ();
System.out.println (DF.Format (date));
DateFormat DFLONG = DateFormat.getdateTimeInstance (DateFormat.long, DateFormat.long);
System.out.println (DFLONG.FORMAT (date));
DateFormat DfMedium = DateFormat.GetdateTimeInstance (DateFormat.medium,
DateFormat.medium);
System.out.println (DFMedium.Format (Date));
DateFormat Dfshort = DateFormat.GetdateTimeInstance (DateFormat.Short, DateFormat.short);
System.out.println (Dfshort.Format (Date));
}
Public static void customdateformat () {
Date Date = new date ();
Patternprint ("YYYY.MM.DD HH: MM: SS Z", DATE); // Two mm, DD can cause complementing
PatternPrint ("YY Month Monthly M Monthly HH MM Division", Date); // Two YY is displayed as two years
PatternPrint ("Eee, MMM D, 'YY", DATE
Patternprint ("H: MM A", DATE);
PatternPrint ("HH 'O'' &ck' A, ZZZZ", DATE);
PatternPrint ("YYYY.MMMMM.DD GGG HH: MM AAA", DATE);
PatternPrint ("Eee, D Mmm YYYY HH: MM: SS Z", DATE);
PatternPrint ("YYMMDDHMMMSSS", DATE);
}
Public static void patternprint (String Pattern, Date Date) {
SimpleDateFormat DF = New SimpleDateFormat (Pattern);
System.out.println (DF.Format (date));
}
}
Output:
Integer 123456 IS Displayed AS 123, 456
Double 882323.23523 is displayed as 882, 323.235
Integer 123456 IS Displayed AS 123, 456
Double 882323.23523 is displayed as 882, 323.235
Percent 0.528 IS Displayed AS 53%
Currency 0.528 IS Displayed AS ¥ 52.83
DEFAULT OUTPUT IS 333.3333333333333
Output for pattern ###, ###. ## is 333.33
Output for pattern ####. ## is 333.33
Output for pattern ####. 00 is 333.33
Output for pattern ####. 0 # IS 333.33output for pattern 00000. ## is 00333.33
Output for pattern $ ###, ###. ## is $ 333.33
Output for pattern 0. ### E0 IS 3.333E2
Output for pattern 00. ##% IS 33333.33%
Default Output is 23.0012
Output for pattern ###, ###. ## is 23
Output for pattern ####. ## is 23
Output for pattern ####. 00 is 23.00
Output for pattern ####. 0 # IS 23.0
Output for pattern 00000. ## is 00023
Output for pattern $ ###, ###. ## is $ 23
Output for pattern 0. ### E0 is 2.3e1
Output for pattern 00. ##% IS 2300.12%
Simple Date 2004-8-7
8:16:14
2004-8-7
8:16:14
August 7, 2004, 08:14 14
2004-8-7
8:16:14
04-8-7 8:16 AM
2004.08.07
08:16:14 GMT
08:00
August 7, 2004 08:16
Saturday, August 7, '04
8:16 am
08 O'Clock morning, GMT 08: 00
02004. August.07 AD 08:16 am
Saturday, 7 August 2004 08:
16:14
0800
040807081614 0800