1. 程式人生 > >生日計算(距某個時間的年月日,前/後)

生日計算(距某個時間的年月日,前/後)

其中出生前的return可自定義,詳情見程式碼:

public static String getBirthDay(long birthTime, long nTime) {

        //是否為出生前
        boolean gestation = false;
        if (birthTime > nTime) {
            gestation = true;
            long temp = birthTime;
            birthTime = nTime;
            nTime = temp;
        }

        //收集生日
        String birth = "";
        //某個日子的年月日
        Date n = new Date(nTime);
        int nDay = n.getDate();
        int nMonth = n.getMonth();
        int nYear = n.getYear();

        //生日的年月日
        Date b = new Date(birthTime);
        int bDay = b.getDate();
        int bMonth = b.getMonth();
        int bYear = b.getYear();

        //生日月的天數,計算是否滿月
        int mothDay = 31;
        if (bMonth == 2) {
            if (isRunYear(bYear)) {
                mothDay = 29;
            } else {
                mothDay = 28;
            }
        } else if (bMonth == 4 || bMonth == 6 || bMonth == 9 || bMonth == 11) {
            mothDay = 30;
        }

        //滿歲:當前年大於出生年,且當前月大於出生月,或當前月等於且出生月當前日大於等於出生日,否則月份為:當前年-出生年-1
        int year = 0;
        if (nYear > bYear) {
            if (nMonth > bMonth || (nMonth == bMonth && nDay >= bDay)) {
                year = nYear - bYear;
            } else {
                year = nYear - bYear - 1;
            }
        }
        if (year > 0) {
            if (!gestation) {
                birth += (year + "歲");
            } else {
                return "寶寶出生" + year + "年前";
            }
        }

        //滿月:當前月大於出生月;且當前日大於等於出生日,否則月份為:當前月-出生月-1
        int month = 0;
        if (nMonth > bMonth) {
            if (nDay >= bDay) {
                month = nMonth - bMonth;
            } else {
                month = nMonth - bMonth - 1;
            }
        }
        if (nYear > bYear && month < 0) {
            month += 12;
        }
        if (month > 0) {
            if (!gestation) {
                birth += (month + "個月");
            } else {
                return "寶寶出生" + month + "個月前";
            }
        }

        int day = 0;
        if (nDay >= bDay) {
            if (nYear > bYear || (nYear == bYear && nMonth >= bMonth)) {
                day += (nDay - bDay);
                if (!gestation) {
                    day += 1;
                }
            }
        } else {
            if (nMonth > bMonth || nYear > bYear) {
                day += (mothDay - bDay + nDay);
                if (!gestation) {
                    day += 1;
                }
            }
        }

        if (day > 0) {
            if (!gestation) {
                birth += (day + "天");
            } else {
                return "寶寶出生" + day + "天前";
            }
        }

        return birth;
    }

    public static boolean isRunYear(int year) {
        return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
    }

相關推薦

生日計算某個時間年月日/

其中出生前的return可自定義,詳情見程式碼: public static String getBirthDay(long birthTime, long nTime) { //是否為出生前 boolean gestation = fal

中綴表達式轉綴並計算只考慮個位整數不考慮除0等情況

sta put AS res r+ ring 位置 while AC 中綴轉後綴 public class 中綴轉後綴 { static char[] res;//存儲結果 static int len_r=0; static char[] st

jq整合月份外掛不要年月日只要年月

  最近專案中報表統計需要按照月份進行統計,以前用的jq-ui的外掛,裡面整合的是年月日,修改了好久,覺得太過麻煩,就換了個思路,由於趕時間,所以就度娘了,找到了一個很簡潔又簡單的Demo,但是發現和我的需求有點差異,第一個是年份做為入參不太合理,一般是當前年份的前後十年,第二個是選中了年月之後,下次點選該控

Python小練習更改版更改一部分代碼與錯誤

print items isdigit 對不起 pro 轉換成 efault adl confirm 之前上傳的發現有部分代碼錯誤,重新上傳; 更改了第一次的代碼與錯誤,增加了註釋與商店部分功能; 沒有每天堅持更新博客,與初衷相差甚遠,堅持!每天進步一點點!

LAMP環境搭建源碼包安裝僅測試

dex pack 數據加密 spa 不支持 doc 安裝php mysql數據庫 mysqld linux系統+Apache服務+MySQL數據庫+PHP 安裝順序:PHP要在最後安裝 首先將安裝包上傳到/root目錄下 鏈接:http://pan.baidu.com/s/

linux雲自動化系統運維19磁盤陣列raidlvm管理

linux軟件能做的raid1.讀取速度加倍,兩塊磁盤一起讀取raid0.寫 兩塊硬盤,一塊寫一半raid5:raid1+raid0 三塊磁盤mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}-C;創建 -a :添加 -l:優先級 -n:使用

WebSphere V8.5 靜默安裝升級-使用響應文件靜默安裝軟件包生成相應文件不安裝以及managesdk管理SDK

cep 檢查 linu 要點 pps erb platform uri 命令 使用響應文件靜默安裝軟件包(生成相應文件,不安裝):./IBMIM -record /response_files/install_product.xml -skipInstall skipIns

rancher中級rancher的存儲網絡

了解 出了 一個 som pwd 持久化數據 文件的 默認 edi 容器的存儲機制 參考 http://dockone.io/article/128;http://dockone.io/article/129; Docker鏡像是由多個文件系統(只讀層)疊加而成。當我們

常見電源品牌大揭密轉貼自pceva作者royalk

功能 測試 出貨量 可靠的 忽略 產品分類 穩定 娛樂 軟件 常見電源品牌大揭密(轉貼自pceva,作者royalk) 介紹電源品牌代工廠之前,必須介紹一下電源分類: 標準電源 標準電源就是電腦城裝機用得最多的電源,性能正常,外觀一般,原生接線,也沒有什麽

hbase java api樣例版本1.3.1新API

quorum desc color -i arraylist byte logs sin fig 驗證了如下幾種java api的使用方法。 1.創建表 2.創建表(預分區) 3.單條插入 4.批量插入 5.批量插入(寫緩存) 6.單條get 7.批量get 8.簡單sca

HDU 6208 The Dominator of Strings ——青島網絡賽AC自動機

while using else .cn 清空 mat 一點 自動 ring   最長的才可能成為答案,那麽除了最長的以外全部insert到自動機裏,再拿最長的去match,如果match完以後cnt全被清空了,那麽這個最長串就是答案。事實上方便起見這個最長串一起丟進去也無

Linux運維之道之admin1.4權限和歸屬LADP認證

達內 linux 運維admin admin1.4權限和歸屬:基本權限:基本權限的類別:訪問方式(權限):---讀取:允許查看內容--read (r權限:能夠ls瀏覽此目錄內容)---寫入:允許修改內容--write (w權限:能夠執行rm/mv/cp/mkdir/touch等更

20162311 解讀同伴的收獲&解決同伴的問題11月29日周三

遞歸算法 有一個 非遞歸 ppt 經典 -m 什麽 分支 方式 20162311 解讀同伴的收獲&解決同伴的問題(11月29日,周三) 解讀同伴的收獲 我的同組同學是20162325學號金立清同學 同組同學的收獲是:遞歸算法的非遞歸實現、分治法、動態規劃法、貪心法

USACO Broken Necklace 題解環展開成鏈枚舉

相同 == name 第一個 span bre 我們 return style 題目大意:有一個項鏈,由紅、藍、白三種顏色的珠子組成,然後現在選擇項鏈中的某一處斷開,然後沿斷開處的兩個珠子分別查找,直至找到一個顏色不同的珠子,並統計個數(其中顏色以第一個非白色的為準,白色的

Linux基礎管理——軟件包管理:rpmyum高級使用方法史上最全沒有之一

rpm yum 軟件包管理 yum倉庫 yum源地址配置 前言: GRU Linux操作系統中,實現軟件包管理的常見工具有RPM和yum;本專題將就Centos系統中安裝包的命名、校驗、密鑰導入導出、包安裝、卸載、升級、查詢等眾多rpm包管理相關的操作實現進行總結。1、安裝包1.1、

洛谷P3402 【模板】可持久化並查集可持久化線段樹線段樹

std 樹節點 https case 深度 build eof spa 復雜度 orz TPLY 巨佬,題解講的挺好的。 這裏重點梳理一下思路,做一個小小的補充吧。 寫可持久化線段樹,葉子節點維護每個位置的fa,利用每次只更新一個節點的特性,每次插入\(logN\)個節點,

初學零散小知識看到一點寫一點不斷補充

創建 發現 val ... 方法 ctrl true nbsp -128 1. Integer i1 = 10; Integer i2 = 10; Integer i3 = 128; Integer i4 = 128; System.out.printl

CSU - 1581 Clock Pictures KMP的變形題難想到

i++ span pin get medium 思考 col set cloc 題目鏈接: http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1581 題目意思:告訴你現在有兩個鐘,現在兩個鐘上面都有n個指針,告

遙遠的國度樹鏈剖分換根

100% lca 成了 修改 由於 nod ccf -- date 遙遠的國度 題目描述 zcwwzdjn在追殺十分sb的zhx,而zhx逃入了一個遙遠的國度。當zcwwzdjn準備進入遙遠的國度繼續追殺時,守護神RapiD阻攔了zcwwzdjn的去路,他需要zcwwzdj

Python第二天 數據類型變量

大小 數據類型 發生 com src mage 32位 pre 指定 1. 把任意數據類型賦值給變量 在Python中,等號=是賦值語句,可以把任意數據類型賦值給變量,同一個變量可以反復賦值,而且可以是不同類型的變量,例如: 例子:a = 123 # a是整數