Skip to content

Commit

Permalink
fixed dst
Browse files Browse the repository at this point in the history
  • Loading branch information
Théophile Delmas committed Dec 16, 2023
1 parent 29714bf commit 2f426d5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 30 deletions.
26 changes: 9 additions & 17 deletions app/src/main/java/com/rooster/rooster/Alarm.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,28 +60,20 @@ class Alarm(
else -> throw IllegalArgumentException("Invalid day of the week: $d")
}
}
fun getFormattedTime(timeInSec: Long): CharSequence? {
val fullDateFormat = SimpleDateFormat("HH:mm")
val calendar = Calendar.getInstance()
calendar.timeInMillis = timeInSec
var formattedDate = fullDateFormat.format(calendar.time)
return formattedDate
}

fun getFormattedTimeDST(timeInSec: Long): CharSequence? {
fun getFormattedTime(timeInSec: Long, dst: Boolean): CharSequence? {
val fullDateFormat = SimpleDateFormat("HH:mm")
val calendar = Calendar.getInstance()
var calendar = Calendar.getInstance()
calendar.timeInMillis = timeInSec // Convert seconds to milliseconds

// Retrieve the time zone of the input time
val timeZone = TimeZone.getTimeZone("GMT")
fullDateFormat.timeZone = timeZone

// Consider daylight saving time (DST)
// Adjust the calendar based on the input time zone's DST offset
if (timeZone.inDaylightTime(calendar.time)) {
val dstOffsetInMillis = timeZone.dstSavings
calendar.add(Calendar.MILLISECOND, dstOffsetInMillis)
if (dst == true) {
val timeZone = TimeZone.getTimeZone("GMT")
fullDateFormat.timeZone = timeZone
if (timeZone.inDaylightTime(calendar.time)) {
val dstOffsetInMillis = timeZone.dstSavings
calendar.add(Calendar.MILLISECOND, dstOffsetInMillis)
}
}
return fullDateFormat.format(calendar.time)
}
Expand Down
20 changes: 10 additions & 10 deletions app/src/main/java/com/rooster/rooster/AlarmAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD

tvTime1.visibility = View.VISIBLE

var time = alarm.getFormattedTime(alarm.calculatedTime)
var time = alarm.getFormattedTime(alarm.calculatedTime, false)
if (alarm.relative1 != "Pick Time") {
tvTime1.setText(alarm.relative1)
tvCal.setText(time)
Expand Down Expand Up @@ -312,18 +312,18 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD
var tvTime4 = container.findViewById<TextView>(R.id.tvAlarmTime4)
var tvTime5 = container.findViewById<TextView>(R.id.tvAlarmTime5)
var tvTimeCalculated = container.findViewById<TextView>(R.id.calculatedTime)
tvTimeCalculated.setText(alarm.getFormattedTime(alarm.calculatedTime))
tvTimeCalculated.setText(alarm.getFormattedTime(alarm.calculatedTime, true))
tvTimeCalculated.visibility = View.VISIBLE

tvTime2.visibility = View.VISIBLE
tvTime3.visibility = View.VISIBLE
tvTime4.visibility = View.VISIBLE

tvTime2.setText(alarm.getFormattedTime(alarm.time1))
tvTime2.setText(alarm.getFormattedTime(alarm.time1, false))
tvTime3.setText(alarm.mode)

if (alarm.relative2 != "Pick Time") {
tvTime5.setText("(" + alarm.getFormattedTime(alarm.time2) + ")")
tvTime5.setText("(" + alarm.getFormattedTime(alarm.time2, true) + ")")
tvTime4.setText(alarm.relative2)
tvTime5.visibility = View.VISIBLE
} else {
Expand All @@ -336,7 +336,7 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD
alarm.time1 = (hour.toLong() * 60 + minute) * 60
alarm.enabled = true
swicthEnabled.isChecked = alarm.enabled
Log.e("ALARM", alarm.getFormattedTime(alarm.time1).toString())
Log.e("ALARM", alarm.getFormattedTime(alarm.time1, false).toString())
alarmDbHelper.updateAlarm(alarm)
arrangeLayout(context, container, alarm, alarm.mode, holder)
}, (alarm.time1 / 3600).toInt(), (alarm.time1 % 60 / 60).toInt(), true)
Expand Down Expand Up @@ -370,7 +370,7 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD
var tvTime4 = container.findViewById<TextView>(R.id.tvAlarmTime4)
var tvTime5 = container.findViewById<TextView>(R.id.tvAlarmTime5)
var tvTimeCalculated = container.findViewById<TextView>(R.id.calculatedTime)
tvTimeCalculated.setText(alarm.getFormattedTime(alarm.calculatedTime))
tvTimeCalculated.setText(alarm.getFormattedTime(alarm.calculatedTime, false))
tvTimeCalculated.visibility = View.VISIBLE


Expand All @@ -380,12 +380,12 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD
tvTime4.visibility = View.VISIBLE

tvTime0.setText("Between")
tvTime1.setText(alarm.getFormattedTime(alarm.time1))
tvTime1.setText(alarm.getFormattedTime(alarm.time1, false))
tvTime3.setText("and")
tvTime4.setText(alarm.getFormattedTime(alarm.time2))
tvTime4.setText(alarm.getFormattedTime(alarm.time2, false))

if (alarm.relative1 != "Pick Time") {
tvTime2.setText("(" + alarm.getFormattedTime(alarm.time1) + ")")
tvTime2.setText("(" + alarm.getFormattedTime(alarm.time1, false) + ")")
tvTime1.setText(alarm.relative1)
tvTime2.visibility = View.VISIBLE
} else {
Expand All @@ -394,7 +394,7 @@ class AlarmAdapter(private val alarmList: List<Alarm>, val alarmDbHelper: AlarmD
}

if (alarm.relative2 != "Pick Time") {
tvTime5.setText("(" + alarm.getFormattedTime(alarm.time2) + ")")
tvTime5.setText("(" + alarm.getFormattedTime(alarm.time2, false) + ")")
tvTime4.setText(alarm.relative2)
tvTime5.visibility = View.VISIBLE
} else {
Expand Down
13 changes: 10 additions & 3 deletions app/src/main/java/com/rooster/rooster/AlarmDbHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -255,11 +255,18 @@ class AlarmDbHelper(context: Context) : SQLiteOpenHelper(context, "alarm_db", nu
"Solar Noon" -> timeInMillis = sharedPrefs.getLong("solarNoon", 0)
}
// Calculate the time difference in milliseconds between local time and GMT+0.
val timeDifferenceMillis = TimeZone.getDefault().rawOffset - TimeZone.getTimeZone("GMT+0").rawOffset
val fullDateFormat = SimpleDateFormat("HH:mm")
var calendar = Calendar.getInstance()
val timeZone = TimeZone.getTimeZone("GMT")
fullDateFormat.timeZone = timeZone
calendar.timeInMillis = timeInMillis
if (timeZone.inDaylightTime(calendar.time)) {
val dstOffsetInMillis = timeZone.dstSavings
calendar.add(Calendar.MILLISECOND, dstOffsetInMillis)
}

// Add the time difference to the local time to get GMT+0 time.
val timeInMillisGMT = timeInMillis + timeDifferenceMillis
return timeInMillisGMT
return calendar.timeInMillis
}

fun deleteAlarm(id: Long) {
Expand Down

0 comments on commit 2f426d5

Please sign in to comment.