【发布时间】:2020-11-18 07:26:07
【问题描述】:
我正在尝试在用户开始特定活动和结束活动时保存数据,我想计算用户在这一天/一周/一个月花费了多少小时
我在提取此信息时遇到问题。
这是我的桌子:
@Entity(tableName = "daily_activity_time_table")
data class TimeTrack(
@PrimaryKey(autoGenerate = true)
var activityId: Long = 0L,
@ColumnInfo(name = "start_time")
val startTimeMilli: Date = Date(System.currentTimeMillis()), //i didnt find a better way to save date and time
@ColumnInfo(name = "end_time")
var endTimeMilli: Date = startTimeMilli,
@ColumnInfo(name = "quality_rating")
var sleepQuality: Int = -1
)
例如,我需要一个查询来获取今天小时数的总和,我尝试做这样的事情:
@Query("SELECT SUM(end_time-start_time) from daily_activity_time_table where start_time = date('now') ")
fun getTodayTime(): Long
我可以使用这个转换器将日期和时间打印到屏幕上:
@SuppressLint("SimpleDateFormat")
fun convertLongToDateString(systemTime: Long): String {
return SimpleDateFormat("EEEE MMM-dd-yyyy' Time: 'HH:mm")
.format(systemTime).toString()
}
但无法找到打印用户使用活动的所有时间的方法今天
【问题讨论】:
-
好吧,因为你的开始时间包含分钟和秒,它永远不会等于现在。您必须将其转换为 yyyy-mm-dd 格式以忽略时间而只保留日期。此外,开始日期只有一个时间,而不是您刚刚运行
getMillis的日期。请提供您想要的数据结构和插入新条目的代码 -
@Raghunandan 我添加了转换器,但我不知道它们如何帮助我提取今天的所有活动
-
@AviadHitner 通过编写适当的 sql 查询。转换器用于将日期转换为 long 和 long back to date,当您将它与数据类一起使用时。
标签: android date kotlin android-sqlite android-room