How to create a SimpleDateFormat

android, coding

SimpleDateFormat #

Table content for reference:

LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYearYear1996; 96
YWeek yearYear2009; 09
MMonth in yearMonthJuly; Jul; 07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesday; Tue
uDay number of week (1 = Monday, …, 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
ZTime zoneRFC 822 time zone-0800
XTime zoneISO 8601 time zone-08; -0800; -08:00

##Some code extensions kotlin:

I use JodaTime library for support handle features


fun String?.formatHour(toPattern: String) = formatHour("HH:mm:ss", toPattern)

fun String?.formatHour(fromPattern: String, toPattern: String): String {
    if (this == null) return ""
    return try {
        DateTime.parse(this, DateTimeFormat.forPattern(fromPattern)).toString(toPattern)
    } catch (e: Exception) {
        "Invalid Date"
    }
}

fun String?.formatDate(toPattern: String): String {
    if (this == null) return ""
    return try {
        DateTime(this).toString(toPattern)
    } catch (e: Exception) {
        "Invalid Date"
    }
}

fun String?.formatDate(fromPattern: String, toPattern: String): String {
    if (this == null) return ""
    return try {
        DateTime.parse(this, DateTimeFormat.forPattern(fromPattern)).toString(toPattern)
    } catch (e: Exception) {
        "Invalid Date"
    }
}

fun String?.parseDate(pattern: String? = null): DateTime? {
    if (this == null) return null
    return try {
        pattern?.let { DateTime.parse(this, DateTimeFormat.forPattern(pattern)) } ?: DateTime(this)
    } catch (e: Exception) {
        null
    }
}