-
Notifications
You must be signed in to change notification settings - Fork 1
/
Timestamp.kt
146 lines (123 loc) · 4.06 KB
/
Timestamp.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.arindam.kotlin.x
import java.text.SimpleDateFormat
import java.util.*
/**
* Created by Arindam Karmakar on 26/7/19.
*/
/**
* Get Current Time In Millis
*/
internal fun getCurrentTimeStamp(): Long = Calendar.getInstance().timeInMillis
/**
* Get Current Time In Formatted String
*/
internal fun getCurrentTimeStampSimpleFormat(): String = utcFromDate(Calendar.getInstance())
/**
* Get Time of 90 days back In Formatted String
*/
internal fun utcFallbackDate(): String = utcDaysBackDate(Calendar.getInstance(), 90)
internal fun isoFallbackDate(): String = isoDaysBackDate(Calendar.getInstance(), 90)
/* UTC Format Date */
/**
* Transform Timestamp to UTC String.
*/
fun utcFromDate(time: Long): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
dateFormat.timeZone = TimeZone.getTimeZone("UTC")
val utcDate = dateFormat.format(Date(time))
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Transform Date to UTC String.
*/
fun utcFromDate(date: Date): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
dateFormat.timeZone = TimeZone.getTimeZone("UTC")
val utcDate = dateFormat.format(date)
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Transform Calender to UTC String.
*/
fun utcFromDate(calendar: Calendar): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
dateFormat.timeZone = TimeZone.getTimeZone("UTC")
val utcDate = dateFormat.format(calendar.time)
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Parse Formatted UTC String to Time Stamp.
*/
fun parseUTC(utcFormattedDate: String, fallbackDate: String = utcFallbackDate()): Long {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH)
dateFormat.timeZone = TimeZone.getTimeZone("UTC")
val parsedDate = try {
dateFormat.parse(utcFormattedDate)
} catch (ex: Exception) {
dateFormat.parse(fallbackDate)
}
return parsedDate.time
}
/**
* Get Number of Days Back Date UTC String.
*/
internal fun utcDaysBackDate(calendar: Calendar, days: Int): String {
calendar.add(Calendar.DATE, -days)
val date = calendar.time
return utcFromDate(date)
}
/* ISO Format Date */
/**
* Transform Timestamp to ISO 8601 String.
*/
fun isoFromDate(time: Long): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
val utcDate = dateFormat.format(Date(time))
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Transform Date to ISO 8601 String.
*/
fun isoFromDate(date: Date): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
val utcDate = dateFormat.format(date)
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Transform Calender to ISO 8601 String.
*/
fun isoFromDate(calendar: Calendar): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
val utcDate = dateFormat.format(calendar.time)
return utcDate.substring(0, 22) + ":" + utcDate.substring(22)
}
/**
* Parse Formatted ISO 8601 String to Timestamp.
*/
fun parseISO(isoFormattedDate: String, fallbackDate: String = isoFallbackDate()): Long {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH)
val parsedDate = try {
dateFormat.parse(isoFormattedDate)
} catch (ex: Exception) {
dateFormat.parse(fallbackDate)
}
return parsedDate.time
}
/**
* Get Number of Days Back Date ISO 8601 String.
*/
internal fun isoDaysBackDate(calendar: Calendar, days: Int): String {
calendar.add(Calendar.DATE, -days)
val date = calendar.time
return utcFromDate(date)
}
fun main() {
val time1 = parseUTC("2019-07-26T09:06:24+00:00")
val time2 = utcFromDate(1564131984000)
val time3 = getCurrentTimeStamp()
val time4 = getCurrentTimeStampSimpleFormat()
println(time1) // > 1564131984000
println(time2) // > 2019-07-26T09:06:24+00:00
println(time3)
println(time4)
}