func (t Time) NumDaysInMonth() int {
	return t.month.numDaysUnchecked(t.year)
}
NumDaysInMonth returns the number of days in the month for this B.S. date.
Each month has a different number of days, and this also differs each year.
package nepcal
import (
	"bytes"
	"errors"
	"fmt"
	"io"
	"time"
)
var ErrOutOfBounds = errors.New("Provided date out of bounds; consult function/method documentation")
type Time struct {
	in time.Time
	year  int
	month Month
	day   int
}
type raw struct {
	year  int
	month Month
	day   int
}
func Now() Time {
	return FromGregorianUnchecked(time.Now())
}
func CalendarNow() io.Reader {
	t := Now()
	return t.Calendar()
}
func FromGregorian(t time.Time) (Time, error) {
	if !IsInRangeGregorian(t) {
		return Time{}, ErrOutOfBounds
	}
	return FromGregorianUnchecked(t), nil
}
func FromGregorianUnchecked(t time.Time) Time {
	return fromGregorian(t)
}
func Date(year int, month Month, day int) (Time, error) {
	if !IsInRangeBS(year, month, day) {
		return Time{}, ErrOutOfBounds
	}
	inraw := raw{year, month, day}
	return fromRaw(inraw), nil
}
func DateUnchecked(year int, month Month, day int) Time {
	inraw := raw{year, month, day}
	return fromRaw(inraw)
}
func (t Time) Gregorian() time.Time {
	return t.in
}
func (t Time) Date() (int, Month, int) {
	return t.Year(), t.Month(), t.Day()
}
func (t Time) Year() int {
	return t.year
}
func (t Time) Month() Month {
	return t.month
}
func (t Time) Day() int {
	return t.day
}
func (t Time) Weekday() Weekday {
	return Weekday(t.in.Weekday())
}
func (t Time) StartWeekday() Weekday {
	dayDiff := (t.day % 7) - 1
	adWithoutbsDiffDays := t.in.AddDate(0, 0, -dayDiff)
	d := adWithoutbsDiffDays.Weekday()
	return Weekday(int(d))
}