背景

命理学是对人生命运规律的探索,以人的各式各样的数字(出生年月日、姓名笔划等)来推测人的性格与命运并占卜推测未来会发生的事情。古今中外都有相关方面的理论,中国的周易系列就是探讨这方面的,还有八字命理、紫微斗数、七星命理和占星术等。 正所谓:谋事在人,成事在天。但倘若命理真是注定的,宇宙也将会失去前进的动力。因此命理学虽然存在一定的道理,但是只可用于趋吉避凶,若没有实际行动,那一切也都是枉然。

涉及到方方面面,这里我需要一个阳历农历换算的工具,毕竟我是自己动手主义,并不想花钱调用一些收费API。上网找了一些人写过的代码,同一天得出的干支也不尽相同,我估计他们都只是随便写一个,能换算出一个结果就行,也没有进行大量测试,而我们算命的时候,最怕的就是日子算错了,那一切就白搭了。

我们的目的是实现一个准确的换算,数据必须与如下所示的这个万年历一致:

这里非常感谢晶晶博主的文章:1900年至2100年公历、农历互转Js代码,很详尽,注释也很完整,我们以此为基准进行后续的实现。

实现步骤

关键点

  • Javascript中的Date对象,十二个月份取值范围是0-11,1900年1月1日在Javascript中是new Date(1900,0,1),而在C#中是new DateTime(1900,1,1),因此在转换JS函数时要特别注意各个月份变量+1,-1的处理。

  • Javascript中的UTC() 方法可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。在C#中可以用如下代码实现:

    private double UTC(int y, int m, int d)
    {
    return (new DateTime(y, m, d) - new DateTime(1970, 1, 1)).TotalMilliseconds;
    }
    注意这里不用判断年份是在1970年之前还是之后,在1970年之前(如1900年)的直接返回一个负值即可。
  • 从API返回的数据中,有些阳历2月份的数据有30天和31天,而很明显我们阳历2月份,只有28天或者29天,需要处理一下。

  • 本文相关代码Github下载

结束语

命理,是生命的道理。

“命运”包括两个含义,一是命,即由命主的八字所组成的一定的排列组合,由它所反映的吉或凶,福或祸,同一时辰那一瞬间同时落地的孩子,他们的命早已注定。二是运,即人一生所走过的每个阶段,家庭、社会、人事际遇的不同,成就了不同的个体。“命”和“运”的组合构成了千姿百态的人生“命运”。

很多人说,既然命是注定的,那算也是这个,不算也是这个命啊,那又何必算呢?就算你算的再准又有什么意义呢?岂不是浪费时间?

算命其实和体检颇有些相似之处。你的身体条件、有什么遗传基因、可能会在什么年纪导致什么疾病,这是先天带来的,是父母遗传的,DNA,嗯,以当前的科学解释是没办法改变的。那大家何必去医院检查身体呢?大可不必去啊,反正有遗传会得肝病的,始终会得肝病,有遗传会得心脏病的人,终归会得心脏病,又何必去检查呢?再说了,就算检查出来了,又有什么用呢?反正这些遗传病也不好治?可他们完全不明白,按时去医院体检,可以最大限度的调整好自己的身体状态,就算遗传病是不可避免的,但是起码医生可以帮助病人将发病的时间延后、或者减轻痛苦、甚至延长生命。

其实,这就是改运的一种表现。所以,同样的道理,我们算命的意义,就在于躲避、减轻人生道路上可能会出现的未知灾难。尽管因为受到先天条件的限制,完全改变命运是不可能的,但是在某一段路上改善一下却是完全可以做到的。

用C#实现一个百度万年历的更多相关文章

  1. 推荐一个百度网盘搜索工具www.sososo.me

    推荐一个百度网盘搜索工具 http://www.sososo.me

  2. 用python写一个百度翻译

    运行环境: python 3.6.0 今天处于练习的目的,就用 python 写了一个百度翻译,是如何做到的呢,其实呢就是拿到接口,通过这个接口去访问,不过中间确实是出现了点问题,不过都解决掉了 先晾 ...

  3. HTML连载31-制作一个百度首页

    一. 我们制作一个百度首页作为练习,可直接复制该代码保存后缀名为.html来查看 <!DOCTYPE html> <html lang="en"> < ...

  4. 面试一个百度T7程序员,一道简单的题没答上来!网友却都在吐槽面试官!

    程序员面试时都考些什么? 一个面试官得意洋洋地说自己面了一个百度T7,出了一道coding题,结果对方连最长上升子序列都写不出来.   楼主本想嘲弄一下百度T7的代码水平低,没想到网友们炸开了锅,纷纷 ...

  5. 实现了一个百度首页的彩蛋——CSS3 Animation简介

    在百度搜索中有这样一个彩蛋:搜索“旋转”,“跳跃”,“反转”等词语,会出现相应的动画效果(搜索“反转”后的效果).查看源码可以发现,这些效果正是通过CSS3的animation属性实现的. 实现这个彩 ...

  6. 使用python和selenium写一个百度搜索的case

    今天练习的内容主要写了一个小功能,在百度上搜索某词汇,然后实现web上的back功能 代码如下: import unittest from selenium import webdriver from ...

  7. nw.js---开发一个百度浏览器

    使用nw.js开发一个简单的百度浏览器就很简单了,只需要在配置里面写入: { // "main": "index.html", "main" ...

  8. 一个百度MAP导航的基础封装

    项目中需要根据点击时候点击的内容,输入百度地图查找并展示规划等相关功能 于是封装了一个单独的百度map的html页面以供调用 功能包括了 ①展示底图 ②切换卫星图,切换卫星路线图,切换普通地图 ③通过 ...

  9. 发现一个百度的密码。。。记最近一段时间的php感想

    请看图. 突然想看一下百度的cookie. 最近百度一年真是多攒多难,我一直挺百度啊.百度文化就是程序员文化,但是收到中国其他文化的侵蚀,不得不变, 任何人重构系统,都会有大概百分三十左右的性能提升. ...

随机推荐

  1. 算法应用杂谈-xgboost的偏差

    一个小样本的cvr 估计问题中, 考虑用xgboost 模型. 发现结果的估计偏差很大. 仔细研究后, 发现现象: 迭代步数不多, 一般3,5步就停了. 预测的分数偏差很大, 分布不匀. pcoc很大 ...

  2. 关于阿里云的远程连接和轻型桌面(xfce4)安装

    这里用的阿里云服务器是轻量应用服务器 先通过网页端的远程连接进入服务器,然后 安装xfce4 (1)先安装更新:apt-get update. (2)安装xrdp:输入apt-get install ...

  3. vue中在时间输入框中默认显示时间

    <template> <card> <label>开始时间</label> <DatePicker v-model="startTime ...

  4. mysql not in 或 in 优化

    在MySQL 中,not in 或in 优化思路, 利用left join 来优化,类似如下的查询方式: select id from a where id in (select id from b ...

  5. php抓取网站图片源码

    <?php /*完成网页内容捕获功能*/ function get_img_url($site_name){     $site_fd = fopen($site_name, "r&q ...

  6. maven deploy到私服去掉时间戳

    直接上代码在插件中的配置. <plugin> <artifactId>maven-war-plugin</artifactId> <version>3. ...

  7. Sort - Merge Sort

    归并排序思想 归并排序时间复杂度分析 归并排序特点 归并排序实现 递归 #include <iostream> using namespace std; void merge(int *a ...

  8. gitKraken取消/关闭全屏

    如果你找不到在哪里设置的 这是配置文件  注意 fullScreen 字段,改这个字段可以改变是不是全屏,改变之前先关闭软件, 文件目录 第二张图

  9. Celery架构

    Celery 官方 # Celery 官网:http://www.celeryproject.org/ # Celery 官方文档英文版:http://docs.celeryproject.org/e ...

  10. polyA|ribo-minus|differentiated cell|Genetic heterogeneity

    转录组 测量单cell,可以认为是一种细胞.细胞株也认为来自同一个细胞. 使用两种方法,找mRNA(polyA)及rmRNA(ribo-minus),然后取交集. 转录组受实验影响,比如小片段没得到. ...