由freemarker毫秒级时间谈固定日期格式
? ? ? ? ? ? ?需要在freemarker中呈現(xiàn)毫秒級(jí)時(shí)間,查了很多資料,始終不對(duì)。最后終于弄明白原因:java和c#中日期的毫秒表示是不同的。c#中的毫秒級(jí)用f表示,java中用S表示。而我將一直在java中用C#的表示方法……
正確地表示:
<date>${logs.eventDate?string('yyyy-MM-dd HH:mm:ss.SSS')}</date>1.java中的日期格式——摘自:點(diǎn)擊打開(kāi)鏈接
日期和時(shí)間模式
日期和時(shí)間格式由日期和時(shí)間模式?字符串指定。在日期和時(shí)間模式字符串中,未加引號(hào)的字母?'A'?到?'Z'?和?'a'?到?'z'?被解釋為模式字母,用來(lái)表示日期或時(shí)間字符串元素。文本可以使用單引號(hào) (') 引起來(lái),以免進(jìn)行解釋。"''"?表示單引號(hào)。所有其他字符均不解釋;只是在格式化時(shí)將它們簡(jiǎn)單復(fù)制到輸出字符串,或者在解析時(shí)與輸入字符串進(jìn)行匹配。
定義了以下模式字母(所有其他字符?'A'?到?'Z'?和?'a'?到?'z'?都被保留):
| G | Era 標(biāo)志符 | Text | AD |
| y | 年 | Year | 1996;?96 |
| M | 年中的月份 | Month | July;?Jul;?07 |
| w | 年中的周數(shù) | Number | 27 |
| W | 月份中的周數(shù) | Number | 2 |
| D | 年中的天數(shù) | Number | 189 |
| d | 月份中的天數(shù) | Number | 10 |
| F | 月份中的星期 | Number | 2 |
| E | 星期中的天數(shù) | Text | Tuesday;?Tue |
| a | Am/pm 標(biāo)記 | Text | PM |
| H | 一天中的小時(shí)數(shù)(0-23) | Number | 0 |
| k | 一天中的小時(shí)數(shù)(1-24) | Number | 24 |
| K | am/pm 中的小時(shí)數(shù)(0-11) | Number | 0 |
| h | am/pm 中的小時(shí)數(shù)(1-12) | Number | 12 |
| m | 小時(shí)中的分鐘數(shù) | Number | 30 |
| s | 分鐘中的秒數(shù) | Number | 55 |
| S | 毫秒數(shù) | Number | 978 |
| z | 時(shí)區(qū) | General time zone | Pacific Standard Time;?PST;?GMT-08:00 |
| Z | 時(shí)區(qū) | RFC 822 time zone | -0800 |
示例
以下示例顯示了如何在美國(guó)語(yǔ)言環(huán)境中解釋日期和時(shí)間模式。給定的日期和時(shí)間為美國(guó)太平洋時(shí)區(qū)的本地時(shí)間 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小時(shí)制格式化日期
{0:yyyy-MM-dd hh:mm:ss.fff}:使用12小時(shí)制格式化日期
以下同理,從左至右分別為-年-月-日 時(shí):分:秒.毫秒
{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}
以下測(cè)試代碼
//---假設(shè)時(shí)間為-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 對(duì)象的年份部分顯示為位數(shù)最多為兩位的數(shù)字。忽略年的前兩位數(shù)字。如果年份是一位數(shù)字 (1-9),則它顯示為一位數(shù)字。
yy 將指定 DateTime 對(duì)象的年份部分顯示為位數(shù)最多為兩位的數(shù)字。忽略年的前兩位數(shù)字。如果年份是一位數(shù)字 (1-9),則將其格式化為帶有前導(dǎo) 0 (01-09)。
yyyy 顯示指定 DateTime 對(duì)象的年份部分(包括世紀(jì))。如果年份長(zhǎng)度小于四位,則按需要在前面追加零以使顯示的年份長(zhǎng)度達(dá)到四位。
z 僅以整小時(shí)數(shù)為單位顯示系統(tǒng)當(dāng)前時(shí)區(qū)的時(shí)區(qū)偏移量。偏移量總顯示為帶有前導(dǎo)或尾隨符號(hào)(零顯示為“+0”),指示早于格林威治時(shí)間 (+) 或遲于格林威治時(shí)間 (-) 的小時(shí)數(shù)。值的范圍是 –12 到 +13。如果偏移量為一位數(shù) (0-9),則將其顯示為帶合適前導(dǎo)符號(hào)的一位數(shù)。該時(shí)區(qū)的設(shè)置指定為 +X 或 –X,其中 X 是相對(duì) GMT 以小時(shí)為單位的偏移量。所顯示的偏移量受夏時(shí)制的影響。
zz 僅以整小時(shí)數(shù)為單位顯示系統(tǒng)當(dāng)前時(shí)區(qū)的時(shí)區(qū)偏移量。偏移量總顯示為帶有前導(dǎo)或尾隨符號(hào)(零顯示為“+00”),指示早于格林威治時(shí)間 (+) 或遲于格林威治時(shí)間 (-) 的小時(shí)數(shù)。值范圍為 –12 到 +13。如果偏移量為單個(gè)數(shù)字 (0-9),則將其格式化為前面帶有 0 (01-09) 并帶有適當(dāng)?shù)那皩?dǎo)符號(hào)。該時(shí)區(qū)的設(shè)置指定為 +X 或 –X,其中 X 是相對(duì) GMT 以小時(shí)為單位的偏移量。所顯示的偏移量受夏時(shí)制的影響。
zzz, zzz(外加任意數(shù)量的附加“z”字符)以小時(shí)和分鐘為單位顯示系統(tǒng)當(dāng)前時(shí)區(qū)的時(shí)區(qū)偏移量。偏移量總是顯示為帶有前導(dǎo)或尾隨符號(hào)(零顯示為“+00:00”),指示早于格林威治時(shí)間 (+) 或遲于格林威治時(shí)間 (-) 的小時(shí)和分鐘數(shù)。值范圍為 –12 到 +13。如果偏移量為單個(gè)數(shù)字 (0-9),則將其格式化為前面帶有 0 (01-09) 并帶有適當(dāng)?shù)那皩?dǎo)符號(hào)。該時(shí)區(qū)的設(shè)置指定為 +X 或 –X,其中 X 是相對(duì) GMT 以小時(shí)為單位的偏移量。所顯示的偏移量受夏時(shí)制的影響。
: 時(shí)間分隔符。
/ 日期分隔符。
" 帶引號(hào)的字符串。顯示轉(zhuǎn)義符 (/) 之后兩個(gè)引號(hào)之間的任何字符串的文本值。?
' 帶引號(hào)的字符串。顯示兩個(gè)“'”字符之間的任何字符串的文本值。
%c 其中 c 是標(biāo)準(zhǔn)格式字符,顯示與格式字符關(guān)聯(lián)的標(biāo)準(zhǔn)格式模式。
\c 其中 c 是任意字符,轉(zhuǎn)義符將下一個(gè)字符顯示為文本。在此上下文中,轉(zhuǎn)義符不能用于創(chuàng)建轉(zhuǎn)義序列(如“\n”表示換行)。
任何其他字符 其他字符作為文本直接寫(xiě)入輸出字符串。
向 DateTime.ToString 傳遞自定義模式時(shí),模式必須至少為兩個(gè)字符長(zhǎng)。如果只傳遞“d”,則公共語(yǔ)言運(yùn)行庫(kù)將其解釋為標(biāo)準(zhǔn)格式說(shuō)明符,這是因?yàn)樗袉蝹€(gè)格式說(shuō)明符都被解釋為標(biāo)準(zhǔn)格式說(shuō)明符。如果傳遞單個(gè)“h”,則引發(fā)異常,原因是不存在標(biāo)準(zhǔn)的“h”格式說(shuō)明符。若要只使用單個(gè)自定義格式進(jìn)行格式化,請(qǐng)?jiān)谡f(shuō)明符的前面或后面添加一個(gè)空格。例如,格式字符串“h”被解釋為自定義格式字符串。
下表顯示使用任意值 DateTime.Now(該值顯示當(dāng)前時(shí)間)的示例。示例中給出了不同的區(qū)域性和時(shí)區(qū)設(shè)置,以闡釋更改區(qū)域性的影響。可以通過(guò)下列方法更改當(dāng)前區(qū)域性:更改 Microsoft Windows 的“日期/時(shí)間”控制面板中的值,傳遞您自己的 DateTimeFormatInfo 對(duì)象,或?qū)?CultureInfo 對(duì)象設(shè)置傳遞給不同的區(qū)域性。此表是說(shuō)明自定義日期和時(shí)間說(shuō)明符如何影響格式化的快速指南。請(qǐng)參閱該表下面闡釋這些說(shuō)明符的代碼示例部分。
格式說(shuō)明符 當(dāng)前區(qū)域性 時(shí)區(qū) 輸出
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
總結(jié)
以上是生活随笔為你收集整理的由freemarker毫秒级时间谈固定日期格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 常用的系统操作响应时间
- 下一篇: 计算机教育专业的专业任选课,什么叫自由选