阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 410|回复: 0

C#日期时间格式化

[复制链接]

2018

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2015-7-8 15:20:18 |显示全部楼层
C#日期时间格式化
日期转化一


为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:
2007
-
01
-
03
14
:
33
:
34
,要转化为IT论坛格式,要用到DateTime.Tostring的方法(String, IFormatProvider),如下所示:

using
System;
using
System.Globalization;
String format
=
"
D
"
;
DateTime date
=
DataTime,Now;
Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));

结果输出
Thursday, June
16
,
2005


参数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

下表列出了可被合并以构造自定义模式的模式。这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。

格式模式 说明
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
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 是格式模式(如果单独使用)。如果格式模式与原义字符或IT论坛格式模式合并,则可以省略“
%
”字符。
c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\”。

只有上面第二个表中列出的格式模式才能用于创建自定义模式;在第一个表中列出的标准格式字符不能用于创建自定义模式。自定义模式的长度至少为两个字符;例如,

DateTime.ToString(
"
d
"
) 返回 DateTime 值;“d”是标准短日期模式。
DateTime.ToString(
"
%d
"
) 返回月中的某天;“
%
d”是自定义模式。
DateTime.ToString(
"
d
"
) 返回后面跟有一个空白字符的月中的某天;“d”是自定义模式。

比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式
如要得到2005年06月 这样格式的时间
可以这样写:
date.ToString(
"
yyyy年MM月
"
, DateTimeFormatInfo.InvariantInfo)

日期转化二

DateTime dt
=
DateTime.Now;
Label1.Text
=
dt.ToString();
//
2005-11-5 13:21:25

Label2.Text
=
dt.ToFileTime().ToString();
//
127756416859912816

Label3.Text
=
dt.ToFileTimeUtc().ToString();
//
127756704859912816

Label4.Text
=
dt.ToLocalTime().ToString();
//
2005-11-5 21:21:25

Label5.Text
=
dt.ToLongDateString().ToString();
//
2005年11月5日

Label6.Text
=
dt.ToLongTimeString().ToString();
//
13:21:25

Label7.Text
=
dt.ToOADate().ToString();
//
38661.5565508218

Label8.Text
=
dt.ToShortDateString().ToString();
//
2005-11-5

Label9.Text
=
dt.ToShortTimeString().ToString();
//
13:21

Label10.Text
=
dt.ToUniversalTime().ToString();
//
2005-11-5 5:21:25


Label1.Text
=
dt.Year.ToString();
//
2005

Label2.Text
=
dt.Date.ToString();
//
2005-11-5 0:00:00

Label3.Text
=
dt.DayOfWeek.ToString();
//
Saturday

Label4.Text
=
dt.DayOfYear.ToString();
//
309

Label5.Text
=
dt.Hour.ToString();
//
13

Label6.Text
=
dt.Millisecond.ToString();
//
441

Label7.Text
=
dt.Minute.ToString();
//
30

Label8.Text
=
dt.Month.ToString();
//
11

Label9.Text
=
dt.Second.ToString();
//
28

Label10.Text
=
dt.Ticks.ToString();
//
632667942284412864

Label11.Text
=
dt.TimeOfDay.ToString();
//
13:30:28.4412864


Label1.Text
=
dt.ToString();
//
2005-11-5 13:47:04

Label2.Text
=
dt.AddYears(
1
).ToString();
//
2006-11-5 13:47:04

Label3.Text
=
dt.AddDays(
1.1
).ToString();
//
2005-11-6 16:11:04

Label4.Text
=
dt.AddHours(
1.1
).ToString();
//
2005-11-5 14:53:04

Label5.Text
=
dt.AddMilliseconds(
1.1
).ToString();
//
2005-11-5 13:47:04

Label6.Text
=
dt.AddMonths(
1
).ToString();
//
2005-12-5 13:47:04

Label7.Text
=
dt.AddSeconds(
1.1
).ToString();
//
2005-11-5 13:47:05

Label8.Text
=
dt.AddMinutes(
1.1
).ToString();
//
2005-11-5 13:48:10

Label9.Text
=
dt.AddTicks(
1000
).ToString();
//
2005-11-5 13:47:04

Label10.Text
=
dt.CompareTo(dt).ToString();
//
0

Label11.Text
=
dt.Add(
?
).ToString();
//
问号为一个时间段


Label1.Text
=
dt.Equals(
"
2005-11-6 16:11:04
"
).ToString();
//
False

Label2.Text
=
dt.Equals(dt).ToString();
//
True

Label3.Text
=
dt.GetHashCode().ToString();
//
1474088234

Label4.Text
=
dt.GetType().ToString();
//
System.DateTime

Label5.Text
=
dt.GetTypeCode().ToString();
//
DateTime


Label1.Text
=
dt.GetDateTimeFormats(
'
s
'
)[
0
].ToString();
//
2005-11-05T14:06:25

Label2.Text
=
dt.GetDateTimeFormats(
'
t
'
)[
0
].ToString();
//
14:06

Label3.Text
=
dt.GetDateTimeFormats(
'
y
'
)[
0
].ToString();
//
2005年11月

Label4.Text
=
dt.GetDateTimeFormats(
'
D
'
)[
0
].ToString();
//
2005年11月5日

Label5.Text
=
dt.GetDateTimeFormats(
'
D
'
)[
1
].ToString();
//
2005 11 05

Label6.Text
=
dt.GetDateTimeFormats(
'
D
'
)[
2
].ToString();
//
星期六 2005 11 05

Label7.Text
=
dt.GetDateTimeFormats(
'
D
'
)[
3
].ToString();
//
星期六 2005年11月5日

Label8.Text
=
dt.GetDateTimeFormats(
'
M
'
)[
0
].ToString();
//
11月5日

Label9.Text
=
dt.GetDateTimeFormats(
'
f
'
)[
0
].ToString();
//
2005年11月5日 14:06

Label10.Text
=
dt.GetDateTimeFormats(
'
g
'
)[
0
].ToString();
//
2005-11-5 14:06

Label11.Text
=
dt.GetDateTimeFormats(
'
r
'
)[
0
].ToString();
//
Sat, 05 Nov 2005 14:06:25 GMT


Label1.Text
=
string
.Format(
"
{0:d}
"
,dt);
//
2005-11-5

Label2.Text
=
string
.Format(
"
{0}
"
,dt);
//
2005年11月5日

Label3.Text
=
string
.Format(
"
{0:f}
"
,dt);
//
2005年11月5日 14:23

Label4.Text
=
string
.Format(
"
{0:F}
"
,dt);
//
2005年11月5日 14:23:23

Label5.Text
=
string
.Format(
"
{0:g}
"
,dt);
//
2005-11-5 14:23

Label6.Text
=
string
.Format(
"
{0:G}
"
,dt);
//
2005-11-5 14:23:23

Label7.Text
=
string
.Format(
"
{0:M}
"
,dt);
//
11月5日

Label8.Text
=
string
.Format(
"
{0:R}
"
,dt);
//
Sat, 05 Nov 2005 14:23:23 GMT

Label9.Text
=
string
.Format(
"
{0:s}
"
,dt);
//
2005-11-05T14:23:23

Label10.Text   
string
.Format(
"
{0:t}
"
,dt);
//
14:23

Label11.Text
=
string
.Format(
"
{0:T}
"
,dt);
//
14:23:23

Label12.Text
=
string
.Format(
"
{0:u}
"
,dt);
//
2005-11-05 14:23:23Z

Label13.Text
=
string
.Format(
"
{0:U}
"
,dt);
//
2005年11月5日 6:23:23

Label14.Text
=
string
.Format(
"
{0:Y}
"
,dt);
//
2005年11月

Label15.Text
=
string
.Format(
"
{0}
"
,dt);
//
2005-11-5 14:23:23

Label16.Text
=
string
.Format(
"
{0:yyyyMMddHHmmssffff}
"
,dt);  
C#比较两时间大小1、比较时间大小的实验
    string st1="12:13";
    string st2="14:14";
    DateTime dt1=Convert.ToDateTime(st1);
    DateTime dt2=Convert.ToDateTime(st2);
    DateTime dt3=DateTime.Now;
    if(DateTime.Compare(dt1,dt2)>0)
     msg.Text=st1+">"+st2;
    else
     msg.Text=st1+"<"+st2;
    msg.Text+="\r\n"+dt1.ToString();
    if(DateTime.Compare(dt1,dt3)>0)
     msg.Text+="\r\n"+st1+">"+dt3.ToString();
    else
     msg.Text+="\r\n"+st1+"<"+dt3.ToString();
2、计算两个时间差值的函数,返回时间差的绝对值:
         private string DateDiff(DateTime DateTime1,DateTime DateTime2)
         {
             string dateDiff=null;
             try
             {
                 TimeSpan ts1=new   TimeSpan(DateTime1.Ticks);
                 TimeSpan ts2=new   TimeSpan(DateTime2.Ticks);
                 TimeSpan ts=ts1.Subtract(ts2).Duration();
                 dateDiff=ts.Days.ToString()+"天"
                         +ts.Hours.ToString()+"小时"
                         +ts.Minutes.ToString()+"分钟"
                         +ts.Seconds.ToString()+"秒";
             }
             catch
             {
             }
             return dateDiff;
         }
3、实现计算DateTime1-36天=DateTime2的功能    TimeSpan ts=new TimeSpan(40,0,0,0);
    DateTime dt2=DateTime.Now.Subtract(ts);
    msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
    msg.Text+=dt2.ToString();
http://www.cnblogs.com/hantianwei/archive/2010/09/23/1833228.html
C#日期时间格式化

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部