c#时间格式化为英⽂_.NET(C#)时间⽇期字符串(String)
格式化转换成Datet。。。
1、时间⽇期字符串(String)转换成Datetime的⽅法
1)Convert.ToDateTime(string)
string格式有要求,必须是yyyy-MM-dd hh:mm:ss
2)DateTime.ParseExact()
System.Globalization.CultureInfo Culinfo = CultureInfo.GetCultureInfo("en-us");
string dateString = "Nov 15 2005 12:00:00:000AM";
DateTime dt = DateTime.ParseExact(dateString, "MMM dd yyyy hh:mm:ss:ffftt", Culinfo);
或者
DateTime dt = DateTime.ParseExact(dateString, "MMM dd yyyy hh:mm:ss:ffftt", Culinfo);
2、字符串(String)转换成Datetime异常报错解决⽅法
错误信息:System.FormatException:“String 'Nov 15 2005 12:00:00:000AM' was not recognized as a valid
DateTime.”(String未被识别为有效的DateTime)。
错误原因:出现这个错误信息,基本上都是转换的格式占位符( "MMM dd yyyy hh:mm:ss:ffftt")与时间字符串不匹配问题,要仔细检查。也可以使⽤格式占位符打印出来对⽐⼀下,代码如下:
Console.WriteLine(DateTime.Now.ToString("MMM dd yyyy hh:mm:ss:ffftt"));
或
System.Globalization.CultureInfo Culinfo = CultureInfo.GetCultureInfo("en-us");
Console.WriteLine(DateTime.Now.ToString("MMM dd yyyy hh:mm:ss:ffftt", Culinfo));
特别注意的情况:
en-us:美国
zh-cn:中国
1)MM和M是数字的⽉份,MMM是英⽂或中⽂的⽉份,主要看System.Globalization.CultureInfo Culinfo =
CultureInfo.GetCultureInfo("en-us")是中国还是外国。
2)tt代表12⼩时中上午或下午,是英⽂还是中⽂还要看System.Globalization.CultureInfo Culinfo = CultureInfo.GetCultureInfo("en-us")。
3)fff 代表秒的⼩数精度为三位。
3、字符串占位符说明
DateTime.ToString(format):
以下格式只能单独使⽤,表⽰特定的格式:
d ShortDatePattern
D LongDatePattern
f 完整⽇期和时间(长⽇期和短时间)
F FullDateTimePattern(长⽇期和长时间)
g 常规(短⽇期和短时间)
G 常规(短⽇期和长时间)
m、M MonthDayPattern
r、R RFC1123Pattern
s 使⽤当地时间的 SortableDateTimePattern(基于 ISO 8601)
t ShortTimePattern
T LongTimePattern
u UniversalSortableDateTimePattern ⽤于显⽰通⽤时间的格式
U 使⽤通⽤时间的完整⽇期和时间(长⽇期和长时间)
y、Y YearMonthPattern
以下格式可以组合使⽤,格式化出不同的⽇期显⽰格式:
d ⽉中的某⼀天。⼀位数的⽇期没有前导零。
dd ⽉中的某⼀天。⼀位数的⽇期有⼀个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M ⽉份数字。⼀位数的⽉份没有前导零。
MM ⽉份数字。⼀位数的⽉份有⼀个前导零。
string转date的方法MMM ⽉份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM ⽉份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份⼩于 10,则显⽰不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份⼩于 10,则显⽰具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的⽇期不具有关联的时期或纪元字符串,则忽略该模式。
h 12 ⼩时制的⼩时。⼀位数的⼩时数没有前导零。
hh 12 ⼩时制的⼩时。⼀位数的⼩时数有前导零。
H 24 ⼩时制的⼩时。⼀位数的⼩时数没有前导零。
HH 24 ⼩时制的⼩时。⼀位数的⼩时数有前导零。
m 分钟。⼀位数的分钟数没有前导零。
mm 分钟。⼀位数的分钟数有⼀个前导零。
s 秒。⼀位数的秒数没有前导零。
ss 秒。⼀位数的秒数有⼀个前导零。
f 秒的⼩数精度为⼀位。其余数字被截断。
ff 秒的⼩数精度为两位。其余数字被截断。
fff 秒的⼩数精度为三位。其余数字被截断。
ffff 秒的⼩数精度为四位。其余数字被截断。
fffff 秒的⼩数精度为五位。其余数字被截断。
ffffff 秒的⼩数精度为六位。其余数字被截断。
fffffff 秒的⼩数精度为七位。其余数字被截断。
t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指⽰项的第⼀个字符(如果存在)。
tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指⽰项(如果存在)。
z 时区偏移量(“+”或“-”后⾯仅跟⼩时)。⼀位数的⼩时数没有前导零。例如,太平洋标准时间是“-8”。
zz 时区偏移量(“+”或“-”后⾯仅跟⼩时)。⼀位数的⼩时数有前导零。例如,太平洋标准时间是“-08”。
zzz 完整时区偏移量(“+”或“-”后⾯跟有⼩时和分钟)。⼀位数的⼩时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。
: 在 TimeSeparator 中定义的默认时间分隔符。
/ 在 DateSeparator 中定义的默认⽇期分隔符。
%c 其中 c 是格式模式(如果单独使⽤)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。
"c 其中 c 是任意字符。照原义显⽰字符。若要显⽰反斜杠字符,请使⽤“""”。
在String.Format中使⽤格式化:
在String.Format⽅法中也可以格式化这些结构对象,这些格式化的格式包含在“{}”之间,⽤“:”隔开。“:”前⾯为String.Format的索引值,和⼀般格式化⼀样,⽽“:”后⾯则是这些结构的格式化类型。如果使⽤占位符,则和索引之间使⽤“,”分割,正数表⽰右对齐,负数表⽰左对齐,⽽绝对值表⽰所占的字符宽度数,例如:
string.Format("the value is {0,7:f3}",123.45);
//结果 the value is 123.450
例⼦:ToString()转换成⽇期格式:
DateTime datetime = System.DateTime.Now;
Console.WriteLine(datetime.ToString("d"));//表⽰ShortDatePattern的特定格式。
Console.WriteLine(datetime.ToString("yyyy/MM/dd hh:mm:ss"));//组合格式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论