格式化时间

时间:2013-05-15 21:11:59

标签: grails time groovy formatting

这可能看起来像一个非常基本的问题,但它已经躲过了我很长一段时间。我试图在我的控制器中设置一种基于该时间显示特定日期的方法。例如,我希望显示的时间值为值10:00 AM中的10:00:00。我似乎无法正确格式化时间,以便它可以以该形式显示它。这是我将通过的当前代码:

    def dayMap = new JSONArray()
    daysofWeek.each{last ->
        def testjsonObject = new JSONObject()
        c.setTime(last.date)
        int test = c.get(Calendar.DAY_OF_WEEK)
        testjsonObject.put('dayofweekNumber', test)
        testjsonObject.put('start_time', last.start_time)
        testjsonObject.put('end_time', last.end_time)
        dayMap.add(testjsonObject)
    }

    def weekStartTimeString = ""
    def weekEndTimeString = ""


    List finalList = []
    dayMap.each{numberDay ->
        if(numberDay.dayofweekNumber == Calendar.MONDAY){
            if(numberDay.start_time.equals("09:00:00")){
                weekStartTimeString += "<option value='09:00:00' selected>9:00 AM</option>"
                println(numberDay)
            }
            else{
                weekStartTimeString += "<option value='numberDay.start_time' selected>"
            }

        }

    }

我想取值numberDay.start_time并以该格式显示。 10:00:0010:00 AM。这样做的最佳方式是什么,因为我目前没有想法。

1 个答案:

答案 0 :(得分:1)

将时间解析为日期对象,然后将其转换回所需格式的字符串。例如:

def start_date = '10:00:00'
assert Date.parse('HH:mm:ss', start_date).format('hh:mm aa') == '10:00 AM'
start_date = '23:59:59'
assert Date.parse('HH:mm:ss', start_date).format('hh:mm aa') == '11:59 PM'

日期格式字符串与Java SimpleDateFormat类使用的字符串相同。