百分百有效的时间格式化处理方案_C#

百分百有效的时间格式化处理方案_C#

Format 格式化输出

string.Format();

项目 value
格式字符 关联属性/说明
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

例子:

DateTime dt = DateTime.Now;
// 时间格式 yyyy/MM/dd
string time1 = string.Format("{0:d}",dt);
Console.WriteLine(time1);// 2020/10/31
// 时间格式 yyyy年MM月dd日
string time2 = string.Format("{0:D}",dt);
Console.WriteLine(time2);// 2020年10月31日

// 时间格式 yyyy年MM月
string time3 = string.Format("{0:Y}",dt);
Console.WriteLine(time4);// 2020年10月

// 时间格式 yyyy年MM月dd日 h:mm
string time4 = string.Format("{0:f}",dt);
Console.WriteLine(time4);// 2020年10月31日 9:15

// 时间格式 yyyy年MM月dd日 h:mm:ss
string time5 = string.Format("{0:F}",dt);
Console.WriteLine(time5);// 2020年10月31日 9:18:25

// 时间格式 MM月dd日
string time6 = string.Format("{0:M}",dt);
Console.WriteLine(time6);// 10月31日

// 时间格式 yyyy/MM/dd h:mm
string time7 = string.Format("{0:g}",dt);
Console.WriteLine(time7);// 2020/10/31 9:19

// 时间格式 yyyy/MM/dd h:mm:ss
string time8 = string.Format("{0:G}",dt);
Console.WriteLine(time8);// 2020/10/31 9:22:21

// 时间格式 mm:ss
string time9 = string.Format("{0:t}",dt);
Console.WriteLine(time9);// 9:25

// 时间格式 h:mm:ss
string time10 = string.Format("{0:T}",dt);
Console.WriteLine(time10);// 9:25:28

// 时间格式 yyyy-MM-dd h:mm:ss Z(中国)
string time11 = string.Format("{0:u}",dt);
Console.WriteLine(time11);// 2020-10-31 09:25:47Z

// 时间格式 yyyy年MM月dd日 h:mm:ss (通用)
string time12 = string.Format("{0:U}",dt);
Console.WriteLine(time12);// 2020年10月31日 1:26:01

string time13 = string.Format("{0:R}",dt);
Console.WriteLine(time13);// Sat, 31 Oct 2020 09:23:45 GMT

string time14 = string.Format("{0:s}",dt);
Console.WriteLine(time14);// 2020-10-31T09:24:21

string time15 = string.Format("{0}",dt);
Console.WriteLine(time15);// 2020/10/31 10:01:36

string time16 = string.Format("{0:yyyyMMddHHmmssffff}",dt); 
Console.WriteLine(time16);// 202010311002533500 

 下表列出了可被合并以构造自定义模式的模式。这些模式是区分大小写的;例如,识别“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 是格式模式(如果单独使用) 如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符
c 其中 c 是任意字符 照原义显示字符。若要显示反斜杠字符,请使用“\”

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

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

  • 比较方便的是,上面的参数可以随意组合,并且不会出错,多试试,肯定会找到你要的时间格式

C#日期转化

DateTime dt = DateTime.Now;
 dt.ToString();// 2020-10-31 10:10:25
 dt.ToFileTime().ToString();// 132485838882683121
 dt.ToFileTimeUtc().ToString();// 132485839117600286
 dt.ToLocalTime().ToString();// 2020/10/31 10:12:08
 dt.ToLongDateString().ToString();// 2020年10月31日
 dt.ToLongTimeString().ToString();// 10:13:10
 dt.ToOADate().ToString();// 44135.4260169097
 dt.ToShortDateString().ToString();// 2020/10/31
 dt.ToShortTimeString().ToString();// 10:14
 dt.ToUniversalTime().ToString();// 2020/10/31 2:14:19

 dt.Year.ToString();// 2020
 dt.Date.ToString();// 2020/10/31 0:00:00
 dt.DayOfWeek.ToString();// Saturday
 dt.DayOfYear.ToString();// 305
 dt.Hour.ToString();// 10
 dt.Millisecond.ToString();// 53
 dt.Minute.ToString();// 16
 dt.Month.ToString();// 10
 dt.Second.ToString();// 10
 dt.Ticks.ToString();// 637397362366997334
 dt.TimeOfDay.ToString();// 10:17:34.1632189

 dt.ToString();// 2020/10/31 10:17:52
 dt.AddYears(1).ToString();// 2021/10/31 10:18:09
 dt.AddDays(1.1).ToString();// 2020/11/1 12:42:26
 dt.AddHours(1.1).ToString();// 2020/10/31 11:24:43
 dt.AddMilliseconds(1.1).ToString();// 2020/10/31 10:19:30
 dt.AddMonths(1).ToString();// 2020/11/30 10:19:49
 dt.AddSeconds(1.1).ToString();// 2020/10/31 10:20:07
 dt.AddMinutes(1.1).ToString();// 2020/10/31 10:21:31
 dt.AddTicks(1000).ToString();// 2020/10/31 10:20:45
 dt.CompareTo(dt).ToString();// 0
 dt.Add(?).ToString();// 问号为一个时间段

 dt.Equals("2020-10-31 16:11:04").ToString();//False
 dt.Equals(dt).ToString();// True
 dt.GetHashCode().ToString();// -283369369
 dt.GetType().ToString();// System.DateTime
 dt.GetTypeCode().ToString();// DateTime


 dt.GetDateTimeFormats('s')[0].ToString();// 2020-10-31T10:23:45
 dt.GetDateTimeFormats('t')[0].ToString();// 10:24
 dt.GetDateTimeFormats('y')[0].ToString();// 2020年10月
 dt.GetDateTimeFormats('D')[0].ToString();// 2020年10月31日
 dt.GetDateTimeFormats('D')[1].ToString();// 2020年10月31日, 星期六
 
 dt.GetDateTimeFormats('D')[2].ToString();// 星期六, 2020年10月31日
 dt.GetDateTimeFormats('D')[3].ToString();// 2020年10月31日
 dt.GetDateTimeFormats('M')[0].ToString();// 10月31日
 dt.GetDateTimeFormats('f')[0].ToString();// 2020年10月31日 10:25
 dt.GetDateTimeFormats('g')[0].ToString();// 2020/10/31 10:26
 
 dt.GetDateTimeFormats('r')[0].ToString();// Sat, 31 Oct 2020 10:26:27 GMT

比较两个时间的大小

using System;

namespace dateTime
{
    
    
    class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            string st1 = "12:13";
            string st2 = "14:14";
            TimeRatioSize(st1, st2);
        }
        
		 /// <summary>
        /// 比较两个时间的大小
        /// </summary>
        /// <param name="st1"></param>
        /// <param name="st2"></param>
        public static void TimeRatioSize(string st1, string st2)
        {
    
    
            string msg;

            DateTime dt1 = Convert.ToDateTime(st1);
            DateTime dt2 = Convert.ToDateTime(st2);

            DateTime dt3 = DateTime.Now;

            if (DateTime.Compare(dt1, dt2) > 0)
                msg = st1 + ">" + st2;
            else
                msg = st1 + "<" + st2;
            msg += "\r\n" + dt1.ToString();

            if (DateTime.Compare(dt1, dt3) > 0)

                msg += "\r\n" + st1 + ">" + dt3.ToString();
            else
                msg += "\r\n" + st1 + "<" + dt3.ToString();
            Console.WriteLine(msg);
        }
    }
}

在这里插入图片描述

计算时间差

public static void DateDiff(DateTime T1, DateTime T2)
{
    
    
    string dateDiff;
    
    TimeSpan ts1 = new TimeSpan(T1.Ticks);
    TimeSpan ts2 = new TimeSpan(T2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration();
    
    dateDiff = string.Format("{0}天{1}小时{2}分钟{3}秒",
        ts.Days.ToString(), ts.Hours.ToString(), ts.Minutes.ToString(), ts.Seconds.ToString());

    Console.WriteLine(dateDiff);
}

猜你喜欢

转载自blog.csdn.net/qq_43562262/article/details/109339657