mirror of
https://github.com/ManyakRus/starter.git
synced 2025-11-24 22:53:52 +02:00
сделал HoursMinutesSeconds{}
This commit is contained in:
@@ -1,10 +1,19 @@
|
||||
package calendar
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/ManyakRus/starter/constants"
|
||||
"github.com/dromara/carbon/v2"
|
||||
"time"
|
||||
)
|
||||
|
||||
// HoursMinutesSeconds - структура для хранения часов, минут и секунд
|
||||
type HoursMinutesSeconds struct {
|
||||
Hours int
|
||||
Minutes int
|
||||
Seconds int
|
||||
}
|
||||
|
||||
// FindPreviousWorkDay - возвращает дату начала предыдущего рабочего(!) дня
|
||||
// доделать БД Postgres Календарь
|
||||
func FindPreviousWorkDay(DateNow time.Time) time.Time {
|
||||
@@ -60,3 +69,31 @@ func IsWorkDay(Date time.Time) bool {
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
// UnmarshalByte - преобразует байты время в HoursMinutesSeconds{}
|
||||
func (d *HoursMinutesSeconds) UnmarshalByte(b []byte) error {
|
||||
str := string(b)
|
||||
err := d.UnmarshalString(str)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// UnmarshalString - преобразует строку время в HoursMinutesSeconds{}
|
||||
func (d *HoursMinutesSeconds) UnmarshalString(str string) error {
|
||||
if str != "" && str[0] == '"' && str[len(str)-1] == '"' {
|
||||
str = str[1 : len(str)-1]
|
||||
}
|
||||
|
||||
// parse string
|
||||
t, err := time.Parse(constants.LayoutTime, str)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("invalid time string: %s, error: %w", str, err)
|
||||
return err
|
||||
}
|
||||
|
||||
d.Hours = t.Hour()
|
||||
d.Minutes = t.Minute()
|
||||
d.Seconds = t.Second()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -23,3 +23,12 @@ func TestIsWorkDay(t *testing.T) {
|
||||
t.Error("TestIsWorkDay error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHoursMinutesSeconds_UnmarshalByte(t *testing.T) {
|
||||
|
||||
Otvet := HoursMinutesSeconds{}
|
||||
Otvet.UnmarshalByte([]byte("01:02:03"))
|
||||
if Otvet.Hours != 1 || Otvet.Minutes != 2 || Otvet.Seconds != 3 {
|
||||
t.Error("TestHoursMinutesSeconds_UnmarshalByte error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,3 +20,6 @@ var CONNECTION_ID int64 = 3 //7
|
||||
var BRANCH_ID int64 = 2 //20954
|
||||
|
||||
var TIME_ZONE = "Europe/Moscow"
|
||||
|
||||
// LayoutTime - формат текстового времени для загрузки из json
|
||||
const LayoutTime = "15:04:05"
|
||||
|
||||
@@ -26,6 +26,9 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
//// Time - тип для хранения времени
|
||||
//type Time time.Time
|
||||
|
||||
//var log = logger.GetLog()
|
||||
|
||||
// IsTestApp - возвращает true если это тестовая среда выполнения приложения
|
||||
@@ -1448,3 +1451,40 @@ func StringFromBool(value bool) string {
|
||||
|
||||
return Otvet
|
||||
}
|
||||
|
||||
//// UnmarshalByte - преобразует строку время в time.Time
|
||||
//func (d *Time) UnmarshalByte(b []byte) error {
|
||||
// str := string(b)
|
||||
// if str != "" && str[0] == '"' && str[len(str)-1] == '"' {
|
||||
// str = str[1 : len(str)-1]
|
||||
// }
|
||||
//
|
||||
// // parse string
|
||||
// t, err := time.ParseInLocation(constants.LayoutTime, str, constants.Loc)
|
||||
// if err != nil {
|
||||
// err = fmt.Errorf("invalid time string: %s, error: %w", b, err)
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// //
|
||||
// *d = Time(t)
|
||||
// return nil
|
||||
//}
|
||||
|
||||
//// UnmarshalString - преобразует строку время в time.Time
|
||||
//func (d *Time) UnmarshalString(str string) error {
|
||||
// if str != "" && str[0] == '"' && str[len(str)-1] == '"' {
|
||||
// str = str[1 : len(str)-1]
|
||||
// }
|
||||
//
|
||||
// // parse string
|
||||
// t, err := time.Parse(constants.LayoutTime, str)
|
||||
// if err != nil {
|
||||
// err = fmt.Errorf("invalid time string: %s, error: %w", str, err)
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// //
|
||||
// *d = Time(t)
|
||||
// return nil
|
||||
//}
|
||||
|
||||
@@ -1352,3 +1352,13 @@ func TestStringFromBool(t *testing.T) {
|
||||
t.Errorf("Expected 'true', but got %s", Otvet)
|
||||
}
|
||||
}
|
||||
|
||||
//func TestTime_UnmarshalByte(t *testing.T) {
|
||||
// var Otvet Time
|
||||
// Test := []byte("10:05:01")
|
||||
// err := (&Otvet).UnmarshalByte(Test)
|
||||
// if err != nil {
|
||||
// t.Errorf("TestTime_UnmarshalByte() error: %v", err)
|
||||
// }
|
||||
// t.Log(time.Time(Otvet))
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user