C#(99):格式化信息、格式化数字、格式化日期

原文:

标准数字格式字符串 | Microsoft Docs

标准日期和时间格式字符串 | Microsoft Docs

一、格式化方法:

1、ToString()实例方法

使用当前文化:

varname.ToString("C4");

使用特定文化:

varname.ToString("C4", new CultureInfo("en-us"));
varname.ToString("C4", CultureInfo.CreateSpecifiCulture("zh-CN"));

2、字符串.Format()静态方法

string.Format("{0:C4}",varname);
string.Format(CultureInfo.InvariantCulture,"{0:C4}",varname);

3、Console.Write()方法

Console.Write("{0:C4}",varname);

4、区域设置:

1、对数字.ToString()区域设置:

s1 = 4123.ToString("C", CultureInfo.InvariantCulture);//¤4,123.00
s2 = 4123.ToString("C", new CultureInfo("en-us", false).NumberFormat);//$4,123.00
  

2、对日期.ToString()区域设置:

s3 = DateTime.Now.ToString("f", CultureInfo.InvariantCulture);//Tuesday, 25 June 2019 08:53
s4 = DateTime.Now.ToString("f", new CultureInfo("en-us", false).DateTimeFormat);//Tuesday, June 25, 2019 8:53 AM

3、改变当前线程的文化:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

二、格式化数字(格式符不区分大小写)

1、格式化整数(对小数将引发异常),格式符后的数字表示总位数

(1)、格式化为整数,“D”,“Dx”:

string s1, s2;
s1 = 4123.ToString("D");//4123
s2 = 4123.ToString("D6");//004123

Console.WriteLine(s1);
Console.WriteLine(s2);

(2)、格式化成十六进制形式,“X”,“Xx”:

s1 = 4123.ToString("X");//101B
s2 = 4123.ToString("X6");//00101B

2、格式化数字,格式符后的数字表示小数位数,可四舍五入。

(1)、货币形式:“C”,“Cx”,默认两位小数,有逗号

s1 = 4123.ToString("C");//¥4,123.00
s2 = 4123.ToString("C3");//¥4,123.000

(2)、数值形式:“N”,“Nx”,默认两位小数,有逗号

s1 = 4123.ToString("N");//4,123.00
s2 = 4123.ToString("N3");//4,123.000

(3)、定点形式:“F”,“Fx”,默认两位小数,无逗号

s1 = 4123.ToString("F");//4123.00
s2 = 4123.ToString("F3");//4123.000

(4)、指数形式:“E”,”Ex”,默认六位小数:

s1 = 4123.ToString("E");//4.123000E+003
s2 = 4123.7328.ToString("E3");//4.124E+003

(5)、百分数形式:“P”,“Px”,默认两位小数

double number = .2468013;
Console.WriteLine(number.ToString("P", CultureInfo.InvariantCulture));// Displays 24.68 %
Console.WriteLine(number.ToString("P1", CultureInfo.InvariantCulture));// Displays 24.7 %

3、自定义格式:

0位零占位符,#为空占位符。

s1 = 4123.ToString("000.000");//4123.000
s2 = 4123.ToString("##.###");//4123
s3 = 4123.ToString("0%");//412300%

s4 = 4123.7328.ToString("000.000");//4123.733
s5 = 4123.7328.ToString("##.###");//4123.733
s6 = 4123.7328.ToString("0%");//412373%

4、IFormatProvider接口

  • 1、CultureInfo:表示一个特殊的区域
  • 2、NumberFormatInfo:特定区域数字格式信息。
  • 3、DateTimeFormatInfo:特定区域日期时间格式信息。具有Calender属性可设置。

三、格式化日期和时间

1、标准格式:

(1)完整格式(Full,包括日期和时间):“F”,“f”,注意:仅小写“f”精确到分。

s1=DateTime.Now.ToString("F");//2019年6月24日 17:14:08
s2=DateTime.Now.ToString("f");//2019年6月24日 17:14

(2)常规完整格式(General):“G”,“g”。注意:无中文和英文显示,仅小写“g”仅精确到分钟。

s1=DateTime.Now.ToString("G");//2019-06-24 17:14:54
s2=DateTime.Now.ToString("g");//2019-06-24 17:14

(3)年月日(Day,日期):“D”,“d”。注意:小写“d”无中文和英文显示,仅符号.

s1=DateTime.Now.ToString("D");//2019年6月24日
s2=DateTime.Now.ToString("d");//2019-06-24

(4)年月(Year):“Y”,“y”(不分大小写)

s1=DateTime.Now.ToString("Y");//2019年6月
s2=DateTime.Now.ToString("y");//2019年6月

(5)月日(Month):“M”,“m”(不分大小写)

s1=DateTime.Now.ToString("M");//6月24日
s2=DateTime.Now.ToString("m");//6月24日

(6)时间(Time):“T”,“t”,注意:小写“t”仅精确到分。

s1=DateTime.Now.ToString("T");//17:17:29
s2=DateTime.Now.ToString("t");//17:17

2、自定义格式:

常见自定义格式:yyyy-MM-dd HH:mm:ss

(1)公元:“%g”:

s1=DateTime.Now.ToString("%g");//公元

(2)年: “%y”,“yy”(前导0),“yyy”,“yyyy”,

s1=DateTime.Now.ToString("%y");//19
s2=DateTime.Now.ToString("yy");//19
s3=DateTime.Now.ToString("yyy");//2019
s4=DateTime.Now.ToString("yyyy");//2019

(3)月:“%M”,“MM”(前导0),“MMM”,“MMMM”,

s1=DateTime.Now.ToString("%M");//6
s2=DateTime.Now.ToString("MM");//06
s3=DateTime.Now.ToString("MMM");//六月
s4=DateTime.Now.ToString("MMMM");//六月

(4)日:“%d”,“dd”(前导0):

s1=DateTime.Now.ToString("%d");//24
s2=DateTime.Now.ToString("dd");//24

(5)星期:“ddd”,“dddd”(全拼):

s1=DateTime.Now.ToString("ddd");//周一
s2=DateTime.Now.ToString("dddd");//星期一

(6)上下午:“%t”,“tt”(全拼):

s1=DateTime.Now.ToString("%t");//
s2=DateTime.Now.ToString("tt");//下午

(7)小时:“%h”(12小时制),“yy”(前导0),“%H”(24小时制),“HH”(前导0)

s1=DateTime.Now.ToString("%h");//5
s2=DateTime.Now.ToString("hh");//05
s3=DateTime.Now.ToString("%H");//17
s4=DateTime.Now.ToString("HH");//17

(8)分钟:“%m”,“mm”(前导0):

s1=DateTime.Now.ToString("%m");//29
s2=DateTime.Now.ToString("mm");//29

(9)秒:“%s”,“ss”(前导0):

s3=DateTime.Now.ToString("%s");//45
s4=DateTime.Now.ToString("ss");//45

(10)日期间隔符”%/”,时间间隔符:“%:”:

s1=DateTime.Now.ToString("%/");//-
s2=DateTime.Now.ToString("%:");//:

3、获取日期的英文缩写

三种方式:

s1 = DateTime.Now.ToString("MMM", CultureInfo.InvariantCulture);//Jun(推荐)
s2 = new CultureInfo("en-us", false).DateTimeFormat.GetAbbreviatedMonthName(6);//Jun:
s3 = new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }[DateTime.Now.Month - 1];//Jun

posted on 2021-03-11 16:47  springsnow  阅读(770)  评论(0编辑  收藏  举报

导航