@@ -6,7 +6,9 @@ package templates
6
6
import (
7
7
"context"
8
8
"html/template"
9
+ "time"
9
10
11
+ "code.gitea.io/gitea/modules/setting"
10
12
"code.gitea.io/gitea/modules/timeutil"
11
13
)
12
14
@@ -32,3 +34,27 @@ func (du *DateUtils) AbsoluteLong(time any) template.HTML {
32
34
func (du * DateUtils ) FullTime (time any ) template.HTML {
33
35
return timeutil .DateTime ("full" , time )
34
36
}
37
+
38
+ // ParseLegacy parses the datetime in legacy format, eg: "2016-01-02" in server's timezone.
39
+ // It shouldn't be used in new code. New code should use Time or TimeStamp as much as possible.
40
+ func (du * DateUtils ) ParseLegacy (datetime string ) time.Time {
41
+ return parseLegacy (datetime )
42
+ }
43
+
44
+ func parseLegacy (datetime string ) time.Time {
45
+ t , err := time .Parse (time .RFC3339 , datetime )
46
+ if err != nil {
47
+ t , _ = time .ParseInLocation (time .DateOnly , datetime , time .Local )
48
+ }
49
+ return t
50
+ }
51
+
52
+ func dateTimeLegacy (format string , datetime any , extraAttrs ... string ) template.HTML {
53
+ if ! setting .IsProd || setting .IsInTesting {
54
+ panic ("dateTimeLegacy is for backward compatibility only, do not use it in new code" )
55
+ }
56
+ if s , ok := datetime .(string ); ok {
57
+ datetime = parseLegacy (s )
58
+ }
59
+ return timeutil .DateTime (format , datetime , extraAttrs ... )
60
+ }
0 commit comments