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. 探秘神奇的运动路径动画 Motion Path

    CSS 中有一个非常有意思的模块 -- CSS Motion Path Module Level 1,翻译过来也就是运动路径.本文将对 motion path 一探究竟,通过本文,你可以了解到: 什么 ...

  2. ES系列(四):http请求分发框架解析

    上一篇讲解了es的网络通信模块实现过程,大致明白其工作原理.再总结一下,就是基于netty编程范式,形成es通信基础.从而,最终我们得到几个重要的handler: Netty4HttpPipelini ...

  3. 请解释Spring事务传播传播行为

    什么叫事务传播行为? 听起来挺高端的,其实很简单. 即然是传播,那么至少有两个东西,才可以发生传播.单体不不存在传播这个行为. 事务传播行为(propagation behavior)指的就是当一个事 ...

  4. POJ2446 二分匹配

    题意:       给你一个n*m的格子,问你能不能用1*2的格子把他铺满,有的位置是不能被铺的. 思路:      水题,直接把个相邻的并且都是可以铺的点连一条边然后匹配一遍就行了,提醒一个地方,就 ...

  5. 洛谷P1085 不高兴的津津

    题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴.但是津津如果一天上课超过八个小时就会不高兴,而 ...

  6. Linux获取权限

    目录 Bash反弹shell Python反弹shell 写入命令到定时任务文件 写入SSH公钥 写入/etc/profile文件 当我们可以在远程Linux主机上执行任意命令或写入任意数据到任意文件 ...

  7. CVE-2010-2883:基于样本分析 PDF SING表字符溢出漏洞

    0x01 前言 CVE-2010-2883 漏洞的成因是由于 CoolType.dll 这个动态链接库在解析 SING 表中的 uniqueName 这个项时没有对长度进行限制,导致使用 strcat ...

  8. window 10 删除文件夹需要管理员权限

    如果设了当前的账号有权限删除了, 还是显示删除里管理员则需要改: 按Win+R组合键,输入gpedit.msc点击确定: 在窗口边依次打开计算机配置--Windows设置--安全设置--本地策略--安 ...

  9. 剖析XAML语言

    这节剖析一下XAML(读作:zaml)--这一WPF中的UI设计语言. XAML 在wpf中,UI部分使用xaml语言来编写,xaml语言是由xml语言派生而来的语言,所以在xaml中我们可以看到很多 ...

  10. Asp.NetCore Web开发之路由

    接着讲asp.net core web开发,这节讲路由系统(Route). 在asp.net core中通过路由来将请求映射到对应的action,主要用到两个中间件,UseRouting()和UseE ...