github.com/sacloud/iaas-api-go@v1.12.0/types/day_of_week.go (about) 1 // Copyright 2022-2023 The sacloud/iaas-api-go Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package types 16 17 import "sort" 18 19 // EDayOfTheWeek 曜日 20 type EDayOfTheWeek string 21 22 // DaysOfTheWeek 曜日 23 var DaysOfTheWeek = struct { 24 Sunday EDayOfTheWeek 25 Monday EDayOfTheWeek 26 Tuesday EDayOfTheWeek 27 Wednesday EDayOfTheWeek 28 Thursday EDayOfTheWeek 29 Friday EDayOfTheWeek 30 Saturday EDayOfTheWeek 31 }{ 32 Sunday: EDayOfTheWeek("sun"), 33 Monday: EDayOfTheWeek("mon"), 34 Tuesday: EDayOfTheWeek("tue"), 35 Wednesday: EDayOfTheWeek("wed"), 36 Thursday: EDayOfTheWeek("thu"), 37 Friday: EDayOfTheWeek("fri"), 38 Saturday: EDayOfTheWeek("sat"), 39 } 40 41 func DayOfTheWeekFromString(s string) EDayOfTheWeek { 42 switch s { 43 case "sun": 44 return DaysOfTheWeek.Sunday 45 case "mon": 46 return DaysOfTheWeek.Monday 47 case "tue": 48 return DaysOfTheWeek.Tuesday 49 case "wed": 50 return DaysOfTheWeek.Wednesday 51 case "thu": 52 return DaysOfTheWeek.Thursday 53 case "fri": 54 return DaysOfTheWeek.Friday 55 case "sat": 56 return DaysOfTheWeek.Saturday 57 } 58 return DaysOfTheWeek.Monday // デフォルト 59 } 60 61 func DayOfTheWeekFromInt(i int) EDayOfTheWeek { 62 switch i { 63 case 0: 64 return DaysOfTheWeek.Sunday 65 case 1: 66 return DaysOfTheWeek.Monday 67 case 2: 68 return DaysOfTheWeek.Tuesday 69 case 3: 70 return DaysOfTheWeek.Wednesday 71 case 4: 72 return DaysOfTheWeek.Thursday 73 case 5: 74 return DaysOfTheWeek.Friday 75 case 6: 76 return DaysOfTheWeek.Saturday 77 } 78 79 return DaysOfTheWeek.Monday // デフォルト 80 } 81 82 // String Stringer実装 83 func (w EDayOfTheWeek) String() string { 84 return string(w) 85 } 86 87 // Int 曜日の数値表現 88 func (w EDayOfTheWeek) Int() int { 89 switch w.String() { 90 case "sun": 91 return 0 92 case "mon": 93 return 1 94 case "tue": 95 return 2 96 case "wed": 97 return 3 98 case "thu": 99 return 4 100 case "fri": 101 return 5 102 case "sat": 103 return 6 104 } 105 return -1 106 } 107 108 // SortDayOfTheWeekList バックアップ取得曜日のソート(日曜開始) 109 func SortDayOfTheWeekList(weekdays []EDayOfTheWeek) { 110 sort.Slice(weekdays, func(i, j int) bool { 111 return weekdays[i].Int() < weekdays[j].Int() 112 }) 113 } 114 115 // DaysOfTheWeekStrings 有効なバックアップ取得曜日のリスト(文字列) 116 var DaysOfTheWeekStrings = []string{ 117 DaysOfTheWeek.Sunday.String(), 118 DaysOfTheWeek.Monday.String(), 119 DaysOfTheWeek.Tuesday.String(), 120 DaysOfTheWeek.Wednesday.String(), 121 DaysOfTheWeek.Thursday.String(), 122 DaysOfTheWeek.Friday.String(), 123 DaysOfTheWeek.Saturday.String(), 124 }