C# 时间格式(血淋淋的教训啊。。。)
今天做項目是,調用其他項目的接口,需要傳遞時間及包含時間的一些其他參數的簽名。總是返回時間格式粗誤。
我的時間格式為:var CallTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff");
然后問接口那邊的技術人員,理直氣壯的說,是嚴格按照他們接口文檔里邊時間格式來的(PS:文檔里給的時間舉例是:2014-07-16 09:16:36.390),然后那邊的技術人員說我沒有格式化,要我改成標準格式 : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
查了查文檔,我的寫法是12小時制的,那邊技術給的是24小時制的 。。。
其實,我也不知道還有這些分法。。。
(要是他們文檔里標明要用24小時格式,或許我還會查查怎么是24小時制。當初我都不知道HH和hh是有區別的,見結果出來和他們的樣例一致,就沒有深追究這個格式轉換問題。。。此處吐槽一下~)
下邊摘自:http://www.cnblogs.com/dgjack/archive/2011/01/15/1936350.html?希望大家也能對時間這塊能有個更加全面的了解~
我們要用到:
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??????????????????? FC1123Pattern
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 是格式模式(如果單獨使用)。如果格式模式與原義字符或其他格式模式合并,則可以省略“%”字符。
\ c???????????????? 其中 c 是任意字符。照原義顯示字符。若要顯示反斜杠字符,請使用“\\”。
只有上面第二個表中列出的格式模式才能用于創建自定義模式;
在第一個表中列出的標準格式字符不能用于創建自定義模式。
自定義模式的長度至少為兩個字符;
例如,DateTime.ToString("d") 返回 DateTime 值;
“d”是標準短日期模式。
DateTime.ToString( "%d") 返回月中的某天;
“%d”是自定義模式.
DateTime.ToString( "d ") 返回后面跟有一個空白字符的月中的某天;
“d”是自定義模式。
比較方便的是,上面的參數可以隨意組合,并且不會出錯,多試試,肯定會找到你要的時間格式如要得到2005年06月 這樣格式的時間
可以這樣寫: date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)如此類推
轉載于:https://www.cnblogs.com/gavin-num1/p/4801385.html
總結
以上是生活随笔為你收集整理的C# 时间格式(血淋淋的教训啊。。。)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 相机,视频录制
- 下一篇: 程序员所应具备的品质