mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-26 19:38:48 +01:00
🎨 Support database date field relative to today's filtering https://github.com/siyuan-note/siyuan/issues/10451
This commit is contained in:
parent
a9e4161840
commit
3a5f222e36
2 changed files with 54 additions and 11 deletions
|
|
@ -384,13 +384,34 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
|
|||
var relativeTime time.Time
|
||||
switch unit {
|
||||
case RelativeDateUnitDay:
|
||||
relativeTime = now.AddDate(0, 0, count*direction)
|
||||
relativeTime = now.AddDate(0, 0, count*int(direction))
|
||||
if FilterOperatorIsBetween == operator && RelativeDateDirectionThis == direction {
|
||||
// 计算今天的起始时间
|
||||
relativeTime = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
}
|
||||
|
||||
case RelativeDateUnitWeek:
|
||||
relativeTime = now.AddDate(0, 0, count*7*direction)
|
||||
relativeTime = now.AddDate(0, 0, count*7*int(direction))
|
||||
if FilterOperatorIsBetween == operator && RelativeDateDirectionThis == direction {
|
||||
// 计算本周的起始时间
|
||||
weekday := int(now.Weekday())
|
||||
if 0 == weekday {
|
||||
weekday = 7
|
||||
}
|
||||
relativeTime = time.Date(now.Year(), now.Month(), now.Day()-weekday+1, 0, 0, 0, 0, now.Location())
|
||||
}
|
||||
case RelativeDateUnitMonth:
|
||||
relativeTime = now.AddDate(0, count*direction, 0)
|
||||
relativeTime = now.AddDate(0, count*int(direction), 0)
|
||||
if FilterOperatorIsBetween == operator && RelativeDateDirectionThis == direction {
|
||||
// 计算本月的起始时间
|
||||
relativeTime = time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location())
|
||||
}
|
||||
case RelativeDateUnitYear:
|
||||
relativeTime = now.AddDate(count*direction, 0, 0)
|
||||
relativeTime = now.AddDate(count*int(direction), 0, 0)
|
||||
if FilterOperatorIsBetween == operator && RelativeDateDirectionThis == direction {
|
||||
// 计算今年的起始时间
|
||||
relativeTime = time.Date(now.Year(), 1, 1, 0, 0, 0, 0, now.Location())
|
||||
}
|
||||
}
|
||||
|
||||
valueTime := time.UnixMilli(value.Date.Content)
|
||||
|
|
@ -412,13 +433,33 @@ func (value *Value) compareOperator(filter *ViewFilter) bool {
|
|||
unit2 := filter.RelativeDate2.Unit
|
||||
switch unit2 {
|
||||
case RelativeDateUnitDay:
|
||||
relativeTime2 = now.AddDate(0, 0, count*direction)
|
||||
relativeTime2 = now.AddDate(0, 0, count*int(direction))
|
||||
if RelativeDateDirectionThis == direction {
|
||||
// 计算今天的结束时间
|
||||
relativeTime2 = time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 999999999, now.Location())
|
||||
}
|
||||
case RelativeDateUnitWeek:
|
||||
relativeTime2 = now.AddDate(0, 0, count*7*direction)
|
||||
relativeTime2 = now.AddDate(0, 0, count*7*int(direction))
|
||||
if RelativeDateDirectionThis == direction {
|
||||
// 计算本周的结束时间
|
||||
weekday := int(now.Weekday())
|
||||
if 0 == weekday {
|
||||
weekday = 7
|
||||
}
|
||||
relativeTime2 = time.Date(now.Year(), now.Month(), now.Day()-weekday+7, 23, 59, 59, 999999999, now.Location())
|
||||
}
|
||||
case RelativeDateUnitMonth:
|
||||
relativeTime2 = now.AddDate(0, count*direction, 0)
|
||||
relativeTime2 = now.AddDate(0, count*int(direction), 0)
|
||||
if RelativeDateDirectionThis == direction {
|
||||
// 计算本月的结束时间
|
||||
relativeTime2 = time.Date(now.Year(), now.Month()+1, 1, 0, 0, 0, 0, now.Location()).Add(-time.Nanosecond)
|
||||
}
|
||||
case RelativeDateUnitYear:
|
||||
relativeTime2 = now.AddDate(count*direction, 0, 0)
|
||||
relativeTime2 = now.AddDate(count*int(direction), 0, 0)
|
||||
if RelativeDateDirectionThis == direction {
|
||||
// 计算今年的结束时间
|
||||
relativeTime2 = time.Date(now.Year()+1, 1, 1, 0, 0, 0, 0, now.Location()).Add(-time.Nanosecond)
|
||||
}
|
||||
}
|
||||
return (valueTime.After(relativeTime) || valueTime.Equal(relativeTime)) && (valueTime.Before(relativeTime2) || valueTime.Equal(relativeTime2))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue