由freemarker毫秒级时间谈固定日期格式
? ? ? ? ? ? ?需要在freemarker中呈現毫秒級時間,查了很多資料,始終不對。最后終于弄明白原因:java和c#中日期的毫秒表示是不同的。c#中的毫秒級用f表示,java中用S表示。而我將一直在java中用C#的表示方法……
正確地表示:
<date>${logs.eventDate?string('yyyy-MM-dd HH:mm:ss.SSS')}</date>1.java中的日期格式——摘自:點擊打開鏈接
日期和時間模式
日期和時間格式由日期和時間模式?字符串指定。在日期和時間模式字符串中,未加引號的字母?'A'?到?'Z'?和?'a'?到?'z'?被解釋為模式字母,用來表示日期或時間字符串元素。文本可以使用單引號 (') 引起來,以免進行解釋。"''"?表示單引號。所有其他字符均不解釋;只是在格式化時將它們簡單復制到輸出字符串,或者在解析時與輸入字符串進行匹配。
定義了以下模式字母(所有其他字符?'A'?到?'Z'?和?'a'?到?'z'?都被保留):
| G | Era 標志符 | Text | AD |
| y | 年 | Year | 1996;?96 |
| M | 年中的月份 | Month | July;?Jul;?07 |
| w | 年中的周數 | Number | 27 |
| W | 月份中的周數 | Number | 2 |
| D | 年中的天數 | Number | 189 |
| d | 月份中的天數 | Number | 10 |
| F | 月份中的星期 | Number | 2 |
| E | 星期中的天數 | Text | Tuesday;?Tue |
| a | Am/pm 標記 | Text | PM |
| H | 一天中的小時數(0-23) | Number | 0 |
| k | 一天中的小時數(1-24) | Number | 24 |
| K | am/pm 中的小時數(0-11) | Number | 0 |
| h | am/pm 中的小時數(1-12) | Number | 12 |
| m | 小時中的分鐘數 | Number | 30 |
| s | 分鐘中的秒數 | Number | 55 |
| S | 毫秒數 | Number | 978 |
| z | 時區 | General time zone | Pacific Standard Time;?PST;?GMT-08:00 |
| Z | 時區 | RFC 822 time zone | -0800 |
示例
以下示例顯示了如何在美國語言環境中解釋日期和時間模式。給定的日期和時間為美國太平洋時區的本地時間 2001-07-04 12:08:56。| "yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
| "EEE, MMM d, ''yy" | Wed, Jul 4, '01 |
| "h:mm a" | 12:08 PM |
| "hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
| "K:mm a, z" | 0:08 PM, PDT |
| "yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
| "EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
| "yyMMddHHmmssZ" | 010704120856-0700 |
| "yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 |
{0:yyyy-MM-dd HH:mm:ss.fff}:使用24小時制格式化日期
{0:yyyy-MM-dd hh:mm:ss.fff}:使用12小時制格式化日期
以下同理,從左至右分別為-年-月-日 時:分:秒.毫秒
{0:yyyy-MM-dd HH:mm:ss zzz}
{0:yyyy-MM-dd HH:mm:ss.ff zzz}
{0:yyyy-MM-dd HH:mm:ss.fff zzz}
{0:yyyy-MM-dd HH:mm:ss.ffff zzz}
以下測試代碼
//---假設時間為-2009-03-17 16:50:49.92
object objValue2 = Business.Services.ExecuteScalar(sqliteconnstring, "Select LastUpdate From CmItemClass2 order by LastUpdate desc limit 0,1");
string lastUpdate2 = objValue2 == null ? string.Empty : string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", objValue2); //--輸出2009-03-17 16:50:49.920
string lastUpdate3 = objValue2 == null ? string.Empty : string.Format("{0:yyyy-MM-dd hh:mm:ss.fff}", objValue2); //--輸出2009-03-17 04:50:49.920
//--------------------
y 將指定 DateTime 對象的年份部分顯示為位數最多為兩位的數字。忽略年的前兩位數字。如果年份是一位數字 (1-9),則它顯示為一位數字。
yy 將指定 DateTime 對象的年份部分顯示為位數最多為兩位的數字。忽略年的前兩位數字。如果年份是一位數字 (1-9),則將其格式化為帶有前導 0 (01-09)。
yyyy 顯示指定 DateTime 對象的年份部分(包括世紀)。如果年份長度小于四位,則按需要在前面追加零以使顯示的年份長度達到四位。
z 僅以整小時數為單位顯示系統當前時區的時區偏移量。偏移量總顯示為帶有前導或尾隨符號(零顯示為“+0”),指示早于格林威治時間 (+) 或遲于格林威治時間 (-) 的小時數。值的范圍是 –12 到 +13。如果偏移量為一位數 (0-9),則將其顯示為帶合適前導符號的一位數。該時區的設置指定為 +X 或 –X,其中 X 是相對 GMT 以小時為單位的偏移量。所顯示的偏移量受夏時制的影響。
zz 僅以整小時數為單位顯示系統當前時區的時區偏移量。偏移量總顯示為帶有前導或尾隨符號(零顯示為“+00”),指示早于格林威治時間 (+) 或遲于格林威治時間 (-) 的小時數。值范圍為 –12 到 +13。如果偏移量為單個數字 (0-9),則將其格式化為前面帶有 0 (01-09) 并帶有適當的前導符號。該時區的設置指定為 +X 或 –X,其中 X 是相對 GMT 以小時為單位的偏移量。所顯示的偏移量受夏時制的影響。
zzz, zzz(外加任意數量的附加“z”字符)以小時和分鐘為單位顯示系統當前時區的時區偏移量。偏移量總是顯示為帶有前導或尾隨符號(零顯示為“+00:00”),指示早于格林威治時間 (+) 或遲于格林威治時間 (-) 的小時和分鐘數。值范圍為 –12 到 +13。如果偏移量為單個數字 (0-9),則將其格式化為前面帶有 0 (01-09) 并帶有適當的前導符號。該時區的設置指定為 +X 或 –X,其中 X 是相對 GMT 以小時為單位的偏移量。所顯示的偏移量受夏時制的影響。
: 時間分隔符。
/ 日期分隔符。
" 帶引號的字符串。顯示轉義符 (/) 之后兩個引號之間的任何字符串的文本值。?
' 帶引號的字符串。顯示兩個“'”字符之間的任何字符串的文本值。
%c 其中 c 是標準格式字符,顯示與格式字符關聯的標準格式模式。
\c 其中 c 是任意字符,轉義符將下一個字符顯示為文本。在此上下文中,轉義符不能用于創建轉義序列(如“\n”表示換行)。
任何其他字符 其他字符作為文本直接寫入輸出字符串。
向 DateTime.ToString 傳遞自定義模式時,模式必須至少為兩個字符長。如果只傳遞“d”,則公共語言運行庫將其解釋為標準格式說明符,這是因為所有單個格式說明符都被解釋為標準格式說明符。如果傳遞單個“h”,則引發異常,原因是不存在標準的“h”格式說明符。若要只使用單個自定義格式進行格式化,請在說明符的前面或后面添加一個空格。例如,格式字符串“h”被解釋為自定義格式字符串。
下表顯示使用任意值 DateTime.Now(該值顯示當前時間)的示例。示例中給出了不同的區域性和時區設置,以闡釋更改區域性的影響。可以通過下列方法更改當前區域性:更改 Microsoft Windows 的“日期/時間”控制面板中的值,傳遞您自己的 DateTimeFormatInfo 對象,或將 CultureInfo 對象設置傳遞給不同的區域性。此表是說明自定義日期和時間說明符如何影響格式化的快速指南。請參閱該表下面闡釋這些說明符的代碼示例部分。
格式說明符 當前區域性 時區 輸出
d, M en-US GMT 12, 4
d, M es-MX GMT 12, 4
d MMMM en-US GMT 12 April
d MMMM es-MX GMT 12 Abril
dddd MMMM yy gg en-US GMT Thursday April 01 A.D.
dddd MMMM yy gg es-MX GMT Jueves Abril 01 DC
h , m: s en-US GMT 6 , 13: 12
hh,mm:ss en-US GMT 06,13:12
HH-mm-ss-tt en-US GMT 06-13-12-AM
hh:mm, G\MT z? en-US GMT 05:13 GMT +0
hh:mm, G\MT z? en-US GMT +10:00 05:13 GMT +10
hh:mm, G\MT zzz en-US GMT 05:13 GMT +00:00
總結
以上是生活随笔為你收集整理的由freemarker毫秒级时间谈固定日期格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用的系统操作响应时间
- 下一篇: 计算机教育专业的专业任选课,什么叫自由选