mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
* refactor: migrate getFormattedPostTime to utils Move app.getFormattedPostTime to utils and export along with its struct * Set batch notification post times to user TZ * default useMilitaryTime to false in batched email If there is an error reading the user's preference for useMilitaryTime, default to false, as that should be the default value if the user never sets it. --------- Co-authored-by: Mattermost Build <build@mattermost.com>
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/mattermost/mattermost/server/public/model"
|
|
"github.com/mattermost/mattermost/server/public/shared/i18n"
|
|
)
|
|
|
|
func MillisFromTime(t time.Time) int64 {
|
|
return t.UnixNano() / int64(time.Millisecond)
|
|
}
|
|
|
|
func TimeFromMillis(millis int64) time.Time {
|
|
return time.Unix(0, millis*int64(time.Millisecond))
|
|
}
|
|
|
|
func StartOfDay(t time.Time) time.Time {
|
|
year, month, day := t.Date()
|
|
return time.Date(year, month, day, 0, 0, 0, 0, t.Location())
|
|
}
|
|
|
|
func EndOfDay(t time.Time) time.Time {
|
|
year, month, day := t.Date()
|
|
return time.Date(year, month, day, 23, 59, 59, 999999999, t.Location())
|
|
}
|
|
|
|
func Yesterday() time.Time {
|
|
return time.Now().AddDate(0, 0, -1)
|
|
}
|
|
|
|
type FormattedPostTime struct {
|
|
Time time.Time
|
|
Year string
|
|
Month string
|
|
Day string
|
|
Hour string
|
|
Minute string
|
|
TimeZone string
|
|
}
|
|
|
|
func GetFormattedPostTime(user *model.User, post *model.Post, useMilitaryTime bool, translateFunc i18n.TranslateFunc) FormattedPostTime {
|
|
preferredTimezone := user.GetPreferredTimezone()
|
|
postTime := time.Unix(post.CreateAt/1000, 0)
|
|
zone, _ := postTime.Zone()
|
|
|
|
localTime := postTime
|
|
if preferredTimezone != "" {
|
|
loc, _ := time.LoadLocation(preferredTimezone)
|
|
if loc != nil {
|
|
localTime = postTime.In(loc)
|
|
zone, _ = localTime.Zone()
|
|
}
|
|
}
|
|
|
|
hour := localTime.Format("15")
|
|
period := ""
|
|
if !useMilitaryTime {
|
|
hour = localTime.Format("3")
|
|
period = " " + localTime.Format("PM")
|
|
}
|
|
|
|
return FormattedPostTime{
|
|
Time: localTime,
|
|
Year: strconv.Itoa(localTime.Year()),
|
|
Month: translateFunc(localTime.Month().String()),
|
|
Day: strconv.Itoa(localTime.Day()),
|
|
Hour: hour,
|
|
Minute: fmt.Sprintf("%02d"+period, localTime.Minute()),
|
|
TimeZone: zone,
|
|
}
|
|
}
|