1
0
mirror of https://github.com/ManyakRus/starter.git synced 2025-11-24 22:53:52 +02:00

сделал HoursMinutesSeconds{}

This commit is contained in:
Nikitin Aleksandr
2025-02-12 15:12:33 +03:00
parent c1a042cab8
commit cf70289689
5 changed files with 99 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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")
}
}

View File

@@ -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"

View File

@@ -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
//}

View File

@@ -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))
//}