annotate pkg/common/time.go @ 5591:0011f50cf216 surveysperbottleneckid

Removed no longer used alternative api for surveys/ endpoint. As bottlenecks in the summary for SR imports are now identified by their id and no longer by the (not guarantied to be unique!) name, there is no longer the need to request survey data by the name+date tuple (which isn't reliable anyway). So the workaround was now reversed.
author Sascha Wilde <wilde@sha-bang.de>
date Wed, 06 Apr 2022 13:30:29 +0200
parents b3b990811f2c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2150
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
2929
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
7 // Copyright (C) 2018, 2019 by via donau
2150
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
2929
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
13 // * Bernhard E. Reiter <bernhard.reiter@intevation.de>
2150
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 package common
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
17 import (
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
18 "math"
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
19 "time"
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
20 )
2929
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
21
2150
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 const (
2929
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
23 // time.RFC3339 equals "simplified ISO format as defined by ECMA-262"
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
24 // https://tc39.github.io/ecma262/#sec-date-time-string-format
e5f5afa45451 Change basic in/out datetime format to RFC3339
Bernhard Reiter <bernhard@intevation.de>
parents: 2150
diff changeset
25 // and "SHOULD be used in new protocols on the Internet." (RFC section 5.6)
4162
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
26
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
27 // TimeFormat is the preferred time format represention in gemma.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
28 TimeFormat = time.RFC3339
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
29 // TimeFormatMicro is the same as TimeFormat but also
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
30 // contains 3 digits for micro seconds.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
31 // This is useful for e.g. times in imports and the
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
32 // respective logs.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
33 TimeFormatMicro = "2006-01-02T15:04:05.999Z07:00"
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
34 // TimeFormatMicroLocal is the same as TimeFormatMicro but
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
35 // w/o the timezone. Only used for tolerant parsing.
4078
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
36 TimeFormatMicroLocal = "2006-01-02T15:04:05.000"
4162
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
37 // DateFormat represents the preferred date format in Gemma.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
38 DateFormat = "2006-01-02"
2150
2c67c51d57ad Print templates: Implemented GET of all templates.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 )
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
40
4075
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
41 // TimeParser is a list of time formats.
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
42 type TimeParser []string
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
43
4162
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
44 // ParseTime parses the time formats known to Gemma.
4078
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
45 var ParseTime = TimeParser{
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
46 TimeFormat,
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
47 TimeFormatMicro,
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
48 TimeFormatMicroLocal,
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
49 DateFormat,
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
50 }.Parse
80bdcd137a1d Parse timezones from time inputs and send timezones in results.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4075
diff changeset
51
3332
c86a8e70b40f Made time interpolation more precise and added a unit test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3095
diff changeset
52 var utc0 = time.Unix(0, 0)
c86a8e70b40f Made time interpolation more precise and added a unit test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3095
diff changeset
53
4075
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
54 // Parse tries to parse a given string by the entries of the layout
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
55 // list one after another. The first matching time is returned.
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
56 // If no layout matches the last error is returned or time zero
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
57 // if the layout list is empty.
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
58 func (tg TimeParser) Parse(s string) (time.Time, error) {
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
59 var err error
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
60 var t time.Time
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
61 for _, layout := range tg {
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
62 if t, err = time.Parse(layout, s); err == nil {
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
63 break
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
64 }
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
65 }
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
66 return t, err
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
67 }
cb74aa69954e Moved TimeParser to common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3367
diff changeset
68
4162
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
69 // InterpolateTime returns a function that linearly interpolates the
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
70 // time between t1 and t2 for given value m1 to m2.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
71 // If m1 is given to the returned function t1 is returned.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
72 // If m2 is given to the returned function t2 is returned.
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
73 // Values between m1 and m2 will result in the proportional
8c5df0f3562e Made 'golint' and 'staticcheck' happy with common package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4078
diff changeset
74 // time between t1 and t2.
3367
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
75 func InterpolateTime(t1 time.Time, m1 float64, t2 time.Time, m2 float64) func(float64) time.Time {
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
76
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
77 // f(m1) = t1
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
78 // f(m2) = t2
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
79 // t1 = m1*a + b <=> b = t1 - m1*a
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
80 // t2 = m2*a + b
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
81
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
82 // t1 - t2 = a*(m1 - m2)
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
83 // a = (t1-t2)/(m1 - m2) for m1 != m2
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
84
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
85 if m1 == m2 {
3367
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
86 t := t1.Add(t2.Sub(t1) / 2)
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
87 return func(float64) time.Time { return t }
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
88 }
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
89
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
90 a := t1.Sub(t2).Seconds() / (m1 - m2)
3332
c86a8e70b40f Made time interpolation more precise and added a unit test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3095
diff changeset
91 b := t1.Sub(utc0).Seconds() - m1*a
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
92
3367
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
93 return func(m float64) time.Time {
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
94 x := m*a + b
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
95 secs := math.Ceil(x)
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
96 nsecs := math.Ceil((x - secs) * (999999999 + 1))
ecb4baa2be1a Simplified waterlevel classification.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3332
diff changeset
97 return time.Unix(int64(secs), int64(nsecs))
3027
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
98 }
84e6577a474b Fairway availability: More robust time and value interpolations including corner cases. Still TODO: Distribute to classes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2929
diff changeset
99 }
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
100
5296
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
101 // MinTime returns the earlier time of a and b.
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
102 func MinTime(a, b time.Time) time.Time {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
103 if a.Before(b) {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
104 return a
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
105 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
106 return b
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
107 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
108
5296
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
109 // MaxTime returns the later time of a and b.
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
110 func MaxTime(a, b time.Time) time.Time {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
111 if a.After(b) {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
112 return a
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
113 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
114 return b
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
115 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
116
5296
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
117 // OrderTime orders the times a and b ascendingly.
5195
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
118 func OrderTime(a, b time.Time) (time.Time, time.Time) {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
119 if a.Before(b) {
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
120 return a, b
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
121 }
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
122 return b, a
d6710d29516b Started to move code around.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 4162
diff changeset
123 }
5296
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
124
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
125 // Dusk returns the beginning of the day the time t is in.
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
126 func Dusk(t time.Time) time.Time {
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
127 return time.Date(
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
128 t.Year(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
129 t.Month(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
130 t.Day(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
131 0, 0, 0, 0,
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
132 t.Location())
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
133 }
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
134
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
135 // Dawn returns the last time of the day the time t is in.
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
136 func Dawn(t time.Time) time.Time {
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
137 return time.Date(
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
138 t.Year(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
139 t.Month(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
140 t.Day(),
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
141 23, 59, 59, 999999999,
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
142 t.Location())
b3b990811f2c Moved Dusk and Dawn functions to common time functions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 5195
diff changeset
143 }