You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.7 KiB

// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name gogo.go
// Created by DEV
// Modified 21/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package dates
import "errs"
const(
secondsDay = 24 * 60 * 60
)
var (
G = struct {
ErrInvalidDateRange ErrDates
}{
ErrInvalidDateRange : ErrDates{errs.ErrCode ("invalid-date-range")},
}
)
func IsYearLeap (year int) bool {
return year%4 == 0 && (year%100 != 0 || year%400 == 0) }
func DaysInYear (year int) int {
if IsYearLeap(year) {
return 366 }
return 365
}
func DaysIn (year, month int) int {
if month <= 0 || month > 12 {
return 0 }
d := [12]int{ 31,28,31,30,31,30,31,30,31,30,31 }
if month == 2 && IsYearLeap(year) {
return 29 }
return d[month]
}
func DayOfWeek (year, month, day int) int {
if month < 3 {
month += 12
year--
}
J := year / 100
K := year % 100
h := (day + (13*(month+1))/5 + K + K/4 + J/4 + 5*J) % 7
if h <= 1 {
return h+6
}
return h-1
}

Powered by TurnKey Linux.