package main

import (
"fmt"
"math"
"time"
) /*
@闰年判断
·封装一个函数判断某一个年份是不是闰年(整4不整百,或者整四百)(例如:公元4年是如年,公元100、200、300不是闰年,公元400年是闰年)
·计算一年的精确天数
@根据当前时间纳秒求年月日
·time.Now().Unix()会返回距离1970年零时所逝去的时间秒数:1234567890
·据此求出今天的年月日(一年有60*24*365秒,整除得年;对一年的秒数求余,看看余数中有多少完整的60*24*30就有多少个月;)
·不许借助外部包,尤其是time包!
*/ func IsLeapYear(year int) bool {
if (year%4 == 0 && year%100 != 0) || (year%400 == 0) ||(year%1000==0){
return true
}
return false
} var OrdinaryYearMonthDays = [12]int{31,28,31,30,31,30,31,31,30,31,30,32}
var LeapYearMonthDays = [12]int{31,29,31,30,31,30,31,31,30,31,30,32} func GetDate(elapsedSeconds int)(year,month,day int) { //var year,month,day int for i := 1900; i <= 2000; i++ {
if IsLeapYear(i) {
fmt.Println(i, "是闰年")
}
} //一年的精确天数
daysPerYear := (365*400 + (24*3 + 25)) / 400.0
secondsPerDay := float64(24 * 3600)
secondsPerYear := secondsPerDay * daysPerYear //计算今年是哪一年
//elapsedSeconds := int(time.Now().Unix())
elapsedYears := int(float64(elapsedSeconds) / secondsPerYear)
year = 1970 + elapsedYears
fmt.Println(year) //计算当前是几月
//今年逝去的秒数:1970年后逝去的总秒数-今年以前的48个整年所包含的秒数
thisYearSeconds := float64(elapsedSeconds) - float64(elapsedYears)*secondsPerYear
//今年过去了多少天
thisYearDays := int(math.Ceil(thisYearSeconds / secondsPerDay))
fmt.Println(thisYearDays) var thisYearMonthDays [12]int
if IsLeapYear(year){
thisYearMonthDays = LeapYearMonthDays
}else {
thisYearMonthDays = OrdinaryYearMonthDays
} var tempDays = 0
for i, monthDays:=range thisYearMonthDays {
pastMonthDays := tempDays
tempDays += monthDays
fmt.Println(i,tempDays)
if tempDays >= thisYearDays{
month =i+1
//今年过去的天数-过去11个整月的天数
day = thisYearDays - pastMonthDays
break
}
}
fmt.Println("month=", month)
fmt.Println("day=", day)
return
} func main() {
//year, month, day := GetDate(int(time.Now().Unix()))
//fmt.Printf("当前是%d年%d月%d日", year,month,day)
pastSeconds := int(time.Date(2019, 11, 18, 22, 57, 1, 0, time.Local).Unix())
year, month, day := GetDate(pastSeconds)
fmt.Printf("当前是%d年%d月%d日\n", year,month,day)
fmt.Println(pastSeconds,int(time.Now().Unix()))
}

  

Go语言练习---判断闰年以及根据现在的秒数求现在的年月日的更多相关文章

  1. C 语言实例 - 判断闰年

    用户输入年份,判断该年份是否为闰年. #include <stdio.h> int main() { int year; printf("输入年份: "); scanf ...

  2. C语言初学 判断闰年的问题

    #include<stdio.h> main( ) {  int   year , leap; scanf("%d",&year);             i ...

  3. 【C语言】判断某一正整数是否为完数

    什么是完数? 如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”). 例如,6的因子为1.2.3,而 6=1+2+3,因此6是“完数”. 程序框图:m  问题分析 根据完数的定义,解决本题的 ...

  4. 判断闰年C语言版

    #include<stdio.h> int isLeap(int year) { // 必须先判断是平年的情况 后判断闰年的情况 == && year%!=) || yea ...

  5. c#判断闰年

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. php判断闰年

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值

    1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...

  8. 判断闰年的方法以及如何获得单链表的倒数第K个元素

    今天很悲催,心中向往的公司,打电话过来面试,问到我两个问题,结果竟然都没有回答上,伤心了,记录下今天失败,希望以后不要被同样的问题给PASS. 问题1.如何判断是否为闰年 所谓闰年那就是:四年一闰,百 ...

  9. c语言 如何判断是不是 可显字符

    c语言 如何判断是不是 可显字符int isprint(int c)若可显示返回1,否则0:要包含头文件ctype.h

随机推荐

  1. Property Distribution(DFS)

    Property Distribution タナカ氏が HW アールの果樹園を残して亡くなりました.果樹園は東西南北方向に H×W の区画に分けられ.区画ごとにリンゴ.カキ.ミカンが植えられています. ...

  2. 额!Java中用户线程和守护线程区别这么大?

    在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项. 1.默认用户线程 Java 语言中无论是线程还是 ...

  3. Thinkphp5之ajax分页实现_paginate()参数详细

    Thinkphp5 做数据搜索需要带关键词分页,如何将查询条件带入到分页中,本文详细介绍Thinkphp5 分页带参数 一.基本使用方法: $list = Db::name('user')->w ...

  4. 让访问pc端的官网直接跳转到移动端的网站代码

    <SCRIPT LANGUAGE="JavaScript"> function mobile_device_detect(url) { var thisOS=navig ...

  5. POJ2752KMP逆序处理

    题意:      给你一个串,问你都哪些位置即使前缀又是后缀. 思路:      可以用KMP来做,尝试过很多种方法,想把两个串接起来然后..失败,后来又想可以倒着匹配,就是把整个串倒过来..失败,说 ...

  6. Learning Memory-guided Normality代码学习笔记

    Learning Memory-guided Normality代码学习笔记 记忆模块核心 Memory部分的核心在于以下定义Memory类的部分. class Memory(nn.Module): ...

  7. 【JavaScript】【KMP】Leetcode每日一题-实现strStr()

    [JavaScript]Leetcode每日一题-实现strStr() [题目描述] 实现 strStr() 函数. 给你两个字符串 haystack 和 needle ,请你在 haystack 字 ...

  8. PHP 父类方法如何访问子类属性

    设计知识点 类与对象->后期静态绑定 出现的问题 A 类为父类 里面有一个方法为调用当前类的 $name 属性 当 B 类继承了 A类时 但是输出仍然是 A (父类) 的 属性? <?ph ...

  9. [源码解析] 并行分布式任务队列 Celery 之 EventDispatcher & Event 组件

    [源码解析] 并行分布式任务队列 Celery 之 EventDispatcher & Event 组件 目录 [源码解析] 并行分布式任务队列 Celery 之 EventDispatche ...

  10. VMware Workstation中安装Hyper-V

    1:在虚拟机设置中,CPU属性中勾选"Virtualize Intel VT-x/EPT or AMD-V/RVI"来启用虚拟机的CPU支持虚拟化. 2:2.在虚拟机文件所在目录中 ...