diff pkg/misc/time.go @ 1938:206b1dd31112

Moved time guessing to misc code to be recycled.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 21 Jan 2019 15:18:52 +0100
parents
children eb2f949ddfa2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/misc/time.go	Mon Jan 21 15:18:52 2019 +0100
@@ -0,0 +1,34 @@
+// This is Free Software under GNU Affero General Public License v >= 3.0.Reader.
+// without warranty, see README.md and license for details.
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// License-Filename: LICENSES/AGPL-3.0.txt
+//
+// Copyright (C) 2018 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package misc
+
+import "time"
+
+// TimeGuesser is a list of time formats.
+type TimeGuesser []string
+
+// Guess tries to parse a given string by the entries of the layout
+// list one after another. The first matching time is returned.
+// If no layout matches the last error is returned or time zero
+// if the layout list is empty.
+func (tg TimeGuesser) Guess(s string) (time.Time, error) {
+	var err error
+	var t time.Time
+	for _, layout := range tg {
+		if t, err = time.Parse(layout, s); err == nil {
+			break
+		}
+	}
+	return t, err
+}