mirror of https://github.com/go-gitea/gitea
parent
61be51e56b
commit
b068dbd40e
@ -1,60 +0,0 @@ |
|||||||
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
package timeutil |
|
||||||
|
|
||||||
import ( |
|
||||||
"fmt" |
|
||||||
"html" |
|
||||||
"html/template" |
|
||||||
"strings" |
|
||||||
"time" |
|
||||||
) |
|
||||||
|
|
||||||
// DateTime renders an absolute time HTML element by datetime.
|
|
||||||
func DateTime(format string, datetime any) template.HTML { |
|
||||||
if p, ok := datetime.(*time.Time); ok { |
|
||||||
datetime = *p |
|
||||||
} |
|
||||||
if p, ok := datetime.(*TimeStamp); ok { |
|
||||||
datetime = *p |
|
||||||
} |
|
||||||
switch v := datetime.(type) { |
|
||||||
case TimeStamp: |
|
||||||
datetime = v.AsTime() |
|
||||||
case int: |
|
||||||
datetime = TimeStamp(v).AsTime() |
|
||||||
case int64: |
|
||||||
datetime = TimeStamp(v).AsTime() |
|
||||||
} |
|
||||||
|
|
||||||
var datetimeEscaped, textEscaped string |
|
||||||
switch v := datetime.(type) { |
|
||||||
case nil: |
|
||||||
return "-" |
|
||||||
case time.Time: |
|
||||||
if v.IsZero() || v.Unix() == 0 { |
|
||||||
return "-" |
|
||||||
} |
|
||||||
datetimeEscaped = html.EscapeString(v.Format(time.RFC3339)) |
|
||||||
if format == "full" { |
|
||||||
textEscaped = html.EscapeString(v.Format("2006-01-02 15:04:05 -07:00")) |
|
||||||
} else { |
|
||||||
textEscaped = html.EscapeString(v.Format("2006-01-02")) |
|
||||||
} |
|
||||||
default: |
|
||||||
panic(fmt.Sprintf("Unsupported time type %T", datetime)) |
|
||||||
} |
|
||||||
|
|
||||||
attrs := []string{`weekday=""`, `year="numeric"`} |
|
||||||
switch format { |
|
||||||
case "short", "long": // date only
|
|
||||||
attrs = append(attrs, `month="`+format+`"`, `day="numeric"`) |
|
||||||
return template.HTML(fmt.Sprintf(`<absolute-date %s date="%s">%s</absolute-date>`, strings.Join(attrs, " "), datetimeEscaped, textEscaped)) |
|
||||||
case "full": // full date including time
|
|
||||||
attrs = append(attrs, `format="datetime"`, `month="short"`, `day="numeric"`, `hour="numeric"`, `minute="numeric"`, `second="numeric"`, `data-tooltip-content`, `data-tooltip-interactive="true"`) |
|
||||||
return template.HTML(fmt.Sprintf(`<relative-time %s datetime="%s">%s</relative-time>`, strings.Join(attrs, " "), datetimeEscaped, textEscaped)) |
|
||||||
default: |
|
||||||
panic(fmt.Sprintf("Unsupported format %s", format)) |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue