Skip to content

Commit c4d03bd

Browse files
Updated date time calculation logic (eu-digital-green-certificates#53)
1 parent f85fe17 commit c4d03bd

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

app/src/main/java/dgca/verifier/app/android/TimeExt.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,23 @@
2323
package dgca.verifier.app.android
2424

2525
import java.text.SimpleDateFormat
26-
import java.util.Locale
26+
import java.time.ZonedDateTime
27+
import java.time.format.DateTimeFormatter
28+
import java.util.*
2729

2830
const val YEAR_MONTH_DAY = "yyyy-MM-dd"
29-
const val DATE_TIME = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
3031
const val FORMATTED_YEAR_MONTH_DAY = "MMM d, yyyy"
31-
const val FORMATTED_DATE_TIME = "MMM d, yyyy, HH:mm"
32+
private const val FORMATTED_DATE_TIME = "MMM d, yyyy, HH:mm"
33+
34+
private fun String.toZonedDateTime(): ZonedDateTime? = try {
35+
ZonedDateTime.parse(this)
36+
} catch (error: Throwable) {
37+
null
38+
}
39+
40+
private val DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(FORMATTED_DATE_TIME)
41+
fun String.toFormattedDateTime(): String? =
42+
this.toZonedDateTime()?.let { DATE_TIME_FORMATTER.format(it) }
3243

3344
fun String.parseFromTo(from: String, to: String): String {
3445
return try {

app/src/main/java/dgca/verifier/app/android/verification/TestViewHolder.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,28 @@
2323
package dgca.verifier.app.android.verification
2424

2525
import android.view.LayoutInflater
26+
import android.view.View
2627
import android.view.ViewGroup
2728
import androidx.recyclerview.widget.RecyclerView
28-
import dgca.verifier.app.android.DATE_TIME
29-
import dgca.verifier.app.android.FORMATTED_DATE_TIME
3029
import dgca.verifier.app.android.databinding.ItemTestBinding
3130
import dgca.verifier.app.android.model.TestModel
32-
import dgca.verifier.app.android.parseFromTo
31+
import dgca.verifier.app.android.toFormattedDateTime
3332

3433
class TestViewHolder(private val binding: ItemTestBinding) : RecyclerView.ViewHolder(binding.root) {
3534

3635
fun bind(data: TestModel) {
3736
binding.testResultValue.text = data.resultType.value
38-
binding.dateOfCollectionValue.text = data.dateTimeOfCollection.parseFromTo(DATE_TIME, FORMATTED_DATE_TIME)
39-
binding.dateOfTestResultValue.text = data.dateTimeOfTestResult?.parseFromTo(DATE_TIME, FORMATTED_DATE_TIME)
37+
val dateOfCollectionString: String? =
38+
data.dateTimeOfCollection.toFormattedDateTime()?.apply {
39+
binding.dateOfCollectionValue.text = this
40+
}
41+
binding.dateOfCollectionValue.visibility =
42+
if (dateOfCollectionString?.isNotEmpty() == true) View.VISIBLE else View.GONE
43+
val dateOfTestResultString: String? =
44+
data.dateTimeOfTestResult?.toFormattedDateTime()?.apply {
45+
binding.dateOfTestResultValue.text = this
46+
}
47+
binding.dateOfTestResultValue.visibility = if(dateOfTestResultString?.isNotEmpty() == true) View.VISIBLE else View.GONE
4048
binding.diseaseValue.text = data.disease
4149
binding.typeOfTestValue.text = data.typeOfTest
4250
binding.countryValue.text = data.countryOfVaccination

0 commit comments

Comments
 (0)