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()))
}

  

最新文章

  1. 嵌入式Linux学习入门:控制LED灯
  2. React Native
  3. Ceph剖析:消息处理
  4. 50-ln 简明笔记
  5. 如何在Dreamweaver中使用emmet
  6. [SQL]SQL语言入门级教材_SQL功能与特性(一)
  7. Apache Wamp WampServer 配置多端口 多站点 虚拟目录
  8. linux里的bootproto的none,static,dhcp有什么区别
  9. VS2010中经常使用的快捷键
  10. ReviewBoard安装和配置札记
  11. TCP的发送系列 — tcp_sendmsg()的实现(二)
  12. windows下使用curl命令 &amp;&amp; 常用curl命令
  13. Oracle 12导出、导入数据
  14. 软件工程第4次作业------石墨文档Android客户端案例分析
  15. 算法进阶面试题01——KMP算法详解、输出含两次原子串的最短串、判断T1是否包含T2子树、Manacher算法详解、使字符串成为最短回文串
  16. consul集群搭建,配合nginx完成服务动态发现和健康检查
  17. Android APK反编译详解(附图) (转至 http://blog.csdn.net/ithomer/article/details/6727581)
  18. easyui_datagrid合并行单击某行选中所有
  19. Excel 2010 如何将筛选后的数据复制粘贴到另一个工作表筛选后的表格里
  20. 匹配yyyy-mm-dd日期格式的的正则表达式[转]

热门文章

  1. OO第一单元作业总结——表达式求导
  2. docker日志设置
  3. Pyqt5 combobox
  4. 分享几个网址二维码生成api
  5. Mysql Char 和 Varchar的区别
  6. 【SpringMVC配置失效】Springboot2.x拦截器配置不无生效
  7. Python字体颜色设置
  8. POJ 3613 快速幂+Floyd变形(求限制k条路径的最短路)
  9. 子域名查询、DNS记录查询
  10. UVA11384正整数序列(把123..变成0的最小步数)