我正在尝试制作聊天应用,我正在使用JSQMessagesViewController库。 我的聊天视图显示所有消息及其日期和时间,但我正面临着这个库的一些问题。 我的问题是我只想显示消息日期一次。 假设: 昨天的日期包含10条消息 今天的日期包含15条消息
答案 0 :(得分:4)
您需要确定该消息是否是当天的第一天。然后为所有其他人返回零,直到新的一天。
我创建了一个函数来确定我的消息是否是该个人首先发送的消息。看起来像这样
func firstMessageOfTheDay(indexOfMessage: NSIndexPath) -> Bool {
let messageDate = messages[indexOfMessage.item].date
guard let previouseMessageDate = messages[indexOfMessage.item - 1].date else {
return true // because there is no previous message so we need to show the date
}
let day = Calendar.current.component(.day, from: messageDate)
let previouseDay = Calendar.current.component(.day, from: previouseMessageDate)
if day == previouseDay {
return false
} else {
return true
}
}
然后在适当的函数中调用它。希望如果您有任何其他问题,请帮助我。
答案 1 :(得分:1)
使用此方法执行此操作。
df1<- structure(list(datetime = structure(c(1073098800, 1073131200,
1073142000, 1073163600, 1073703600, 1073736000, 1073746800, 1073768400,
1073790000, 1073822400), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
value = c(NA, NA, NA, -12.7, -12.9, -7.9, -6.2, -14, -11.7,
NA)), .Names = c("datetime", "value"), row.names = c(NA,
10L), class = "data.frame")
如果日期与上一个消息日期返回日期不同,您必须检查消息日期,否则您希望以哪种格式返回nil。