2016-03-23 37 views
1

我運行這個Groovy腳本時返回的日期:使用Groovy - 添加文本基於

高清自衛隊=新java.text.SimpleDateFormat中( 「YYYY-MM-DD KK:MM:SS」)

回報sdf.format(新的Date())

,並返回= 2016年3月23日16點54分39秒

這很好但在返回值的最後,我想根據下面的時間(上午或下午時間)添加一個空間,上午或下午取決於時間:

AM時間收益= 2016年3月23日上午11時54分39秒 PM時間收益= 2016年3月23日16時54分39秒PM

任何想法?

+0

你爲什麼用kk幾個小時? –

回答

1

Groovy更容易,因爲Date有格式化方法;

println new Date().format('yyyy-MM-dd HH:mm:ss a') 
+0

完美謝謝:-) – csman

3

如果要追加AM/PM您可以在日期格式模式的結尾追加一個 'A'(AM/PM標記):

new java.text.SimpleDateFormat("yyyy-MM-dd kk:mm:ss a").format(new Date()) 

這將產生:

2016-03-23 18:05:20 PM 

有關SimpleDateFormat的具體信息,請參閱Java documentation

0

java.time

DateSimpleTextFormat類現在通過內置到Java 8和後來的java.time框架過時。

一個Instant是在UTC時間線上的一個時刻,最多可達到nanosecond分辨率。

本答案中的代碼是Java,因爲我不知道Groovy的語法。

Instant instant = Instant.now(); 

應用時區以獲取ZonedDateTime

ZoneId zoneId = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneId); 

定義您的格式化模式。 DateTimeFormatter中的這些代碼與SimpleDateFormat類似,但不完全相同。研究班級文件。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("yyyy-MM-dd kk:mm:ss"); 

請注意,在該特定的圖案中使用的kk指用於一天而不是0-23(hh)的1-24小時。

生成一個字符串作爲日期時間對象的文本表示。

String output = zdt.format(formatter);