Joda parse ISO8601 date in GMT timezone

前端 未结 3 1166
走了就别回头了
走了就别回头了 2021-02-19 02:30

I have a ISO 8601 date, lets say: 2012-01-19T19:00-05:00

My machine timezone is GMT+1

I\'m trying to use joda to parse this and convert

3条回答
  •  轮回少年
    2021-02-19 03:22

    EDIT

    https://stackoverflow.com/a/23242779/812919

    Is a better solution.


    For any future readers, if you are trying to parse a string in the format yyyyMMddTHHmmssZ. Its easier to parse it with the following code. Code is in Kotlin. The iCalendar recur rule is an example of where this format might appear.

    // Reads from end to start to accommodate case where year has 4+ digits. 10100 for example.
    fun iso8601GetPart(hashMap : HashMap,noOfCharsFromEnd : Int?) : String{
        var str = hashMap.get("DATE_TIME")
        var endIndex = str.length
        if(str.get(str.length-1)=='T' || str.get(str.length-1)=='Z'){
            endIndex--
        }
        if(noOfCharsFromEnd==null){
            return str
        }else{
            hashMap.put("DATE_TIME", str.substring(0, endIndex - noOfCharsFromEnd))
            return str.substring(endIndex-noOfCharsFromEnd,endIndex)
        }
    }
    
    fun foo(){
    
        var hashMap = HashMap()
        hashMap.put("DATE_TIME",dateTimeString)
    
        var secOfMin = iso8601GetPart(hashMap,2).toInt()
        var minOfHour = iso8601GetPart(hashMap,2).toInt()
        var hourOfDay = iso8601GetPart(hashMap,2).toInt()
        var dayOfMonth = iso8601GetPart(hashMap,2).toInt()
        var monthOfYear = iso8601GetPart(hashMap,2).toInt()
        var years = iso8601GetPart(hashMap,null).toInt()
    }
    

提交回复
热议问题