This commit is contained in:
Liang Ding 2023-02-24 13:36:37 +08:00
parent f29dc50f5b
commit 03f3cc6e2e
No known key found for this signature in database
GPG Key ID: 136F30F901A2231D
3 changed files with 42 additions and 31 deletions

View File

@ -19,7 +19,6 @@ package model
import (
"errors"
"fmt"
"math"
"os"
"path"
"path/filepath"
@ -93,35 +92,10 @@ func (box *Box) docFromFileInfo(fileInfo *FileInfo, ial map[string]string) (ret
}
ret.Mtime = mTime.Unix()
ret.HMtime = HumanizeTime(mTime)
ret.HMtime = util.HumanizeTime(mTime, Conf.Lang)
return
}
func HumanizeTime(then time.Time) string {
labels := util.TimeLangs[Conf.Lang]
defaultMagnitudes := []humanize.RelTimeMagnitude{
{time.Second, labels["now"].(string), time.Second},
{2 * time.Second, labels["1s"].(string), 1},
{time.Minute, labels["xs"].(string), time.Second},
{2 * time.Minute, labels["1m"].(string), 1},
{time.Hour, labels["xm"].(string), time.Minute},
{2 * time.Hour, labels["1h"].(string), 1},
{humanize.Day, labels["xh"].(string), time.Hour},
{2 * humanize.Day, labels["1d"].(string), 1},
{humanize.Week, labels["xd"].(string), humanize.Day},
{2 * humanize.Week, labels["1w"].(string), 1},
{humanize.Month, labels["xw"].(string), humanize.Week},
{2 * humanize.Month, labels["1M"].(string), 1},
{humanize.Year, labels["xM"].(string), humanize.Month},
{18 * humanize.Month, labels["1y"].(string), 1},
{2 * humanize.Year, labels["2y"].(string), 1},
{humanize.LongTime, labels["xy"].(string), humanize.Year},
{math.MaxInt64, labels["max"].(string), 1},
}
return humanize.CustomRelTime(then, time.Now(), labels["albl"].(string), labels["blbl"].(string), defaultMagnitudes)
}
func (box *Box) docIAL(p string) (ret map[string]string) {
name := strings.ToLower(filepath.Base(p))
if !strings.HasSuffix(name, ".sy") {

View File

@ -29,7 +29,6 @@ import (
"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/88250/lute/parse"
"github.com/dustin/go-humanize"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/riff"
"github.com/siyuan-note/siyuan/kernel/cache"
@ -207,7 +206,7 @@ func GetTreeDueFlashcards(rootID string) (ret []*Flashcard, err error) {
nextDues := map[riff.Rating]string{}
for rating, due := range card.NextDues() {
nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
}
ret = append(ret, &Flashcard{
@ -285,7 +284,7 @@ func GetDueFlashcards(deckID string) (ret []*Flashcard, err error) {
nextDues := map[riff.Rating]string{}
for rating, due := range card.NextDues() {
nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
}
ret = append(ret, &Flashcard{
@ -317,7 +316,7 @@ func getAllDueFlashcards() (ret []*Flashcard, err error) {
nextDues := map[riff.Rating]string{}
for rating, due := range card.NextDues() {
nextDues[rating] = strings.TrimSpace(humanize.RelTime(due, now, "", ""))
nextDues[rating] = strings.TrimSpace(util.HumanizeRelTime(due, now, Conf.Lang))
}
ret = append(ret, &Flashcard{

View File

@ -17,7 +17,11 @@
package util
import (
"math"
"strings"
"time"
"github.com/dustin/go-humanize"
)
func Millisecond2Time(t int64) time.Time {
@ -33,3 +37,37 @@ func CurrentTimeMillis() int64 {
func CurrentTimeSecondsStr() string {
return time.Now().Format("20060102150405")
}
func HumanizeRelTime(a time.Time, b time.Time, lang string) string {
_, magnitudes := humanizeTimeMagnitudes(lang)
return strings.TrimSpace(humanize.CustomRelTime(a, b, "", "", magnitudes))
}
func HumanizeTime(then time.Time, lang string) string {
labels, magnitudes := humanizeTimeMagnitudes(lang)
return strings.TrimSpace(humanize.CustomRelTime(then, time.Now(), labels["albl"].(string), labels["blbl"].(string), magnitudes))
}
func humanizeTimeMagnitudes(lang string) (labels map[string]interface{}, magnitudes []humanize.RelTimeMagnitude) {
labels = TimeLangs[lang]
magnitudes = []humanize.RelTimeMagnitude{
{time.Second, labels["now"].(string), time.Second},
{2 * time.Second, labels["1s"].(string), 1},
{time.Minute, labels["xs"].(string), time.Second},
{2 * time.Minute, labels["1m"].(string), 1},
{time.Hour, labels["xm"].(string), time.Minute},
{2 * time.Hour, labels["1h"].(string), 1},
{humanize.Day, labels["xh"].(string), time.Hour},
{2 * humanize.Day, labels["1d"].(string), 1},
{humanize.Week, labels["xd"].(string), humanize.Day},
{2 * humanize.Week, labels["1w"].(string), 1},
{humanize.Month, labels["xw"].(string), humanize.Week},
{2 * humanize.Month, labels["1M"].(string), 1},
{humanize.Year, labels["xM"].(string), humanize.Month},
{18 * humanize.Month, labels["1y"].(string), 1},
{2 * humanize.Year, labels["2y"].(string), 1},
{humanize.LongTime, labels["xy"].(string), humanize.Year},
{math.MaxInt64, labels["max"].(string), 1},
}
return
}