计算从出生到现在活了多少天

本教程介绍了一种使用Java计算从出生日期到当前日期所经历总天数的方法。通过输入出生日期和当前日期,利用SimpleDateFormat类格式化日期,再通过Calendar类计算两个日期之间的天数差。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 
 *  计算活了多少天 
 * 
 * 
 */

public class CountLife {

    public static void main(String[] args) throws ParseException {
        Scanner scanner = new Scanner(System.in);
        // 1) 输入您的出生日期确定时间开始时间
        System.out.println("请输入您的出生日期(如:1998-12-12)");
        String first = scanner.next();
        // 2) 确定结束时间
        System.out.println("请输入当前时间(如:1998-12-12)");
        String end = scanner.next();
        // 3) 使用 SimpleDateFormat 类,格式化时间,将字符转成Date格式,注意时间字符串必须和指定格式一样的 (yyyy-MM-dd)
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        // 4) 将字符串转为Date时间处理
        Date firstDate = format.parse(first);
        Date endDate = format.parse(end);
        // 5) 得到Calendar 日历处理类
        Calendar calendar = Calendar.getInstance();
        // 6) 将开始时间设置给Calendar,方便处理时间
        calendar.setTime(firstDate);
        // 7) 声明一个变量,接收统计出两个时间的相差的天数
        int cnt = 0;
        // 9) 将开始时间 和 结束时间通过compareTo方法进行比较,看是否是同一天,如果是同一天的话,返回0
        while(calendar.getTime().compareTo(endDate) != 0) {
            //10) 每次给开始时间去加1天(下面的1单位是天),直到天数加上来等于给定的结束时间为止,循环将不再成立,结束循环
            calendar.add(Calendar.DATE, 1);
            cnt++;
        }
        System.out.println("您活了:" + cnt + "天");
    }

}
 

在C语言中,要实现这个功能,我们可以假设用户输入的是他们的出生日期,然后当前日期可以通过获取系统时间来得到。这里我们简单地使用`time.h`库来获取当前时间戳,并假设一有24小时*60分钟*60秒。首先,需要创建一个结构体表示日期,然后存储出生日期和当前日期的时间戳。下面是一个简单的示例: ```c #include <stdio.h> #include <time.h> // 结构体表示日期 struct Date { int year; int month; int day; }; // 函数计算两个日期之间的差值(以为单位) int days_between_dates(struct Date birthDate, struct Date currentDate) { time_t now = time(NULL); struct tm *sysTime = localtime(&now); // 将当前时间转换为tm结构体 struct tm today = { sysTime->tm_year + 1900, sysTime->tm_mon + 1, sysTime->tm_mday }; // 如果出生日期大于当前日期,返回负数 if (birthDate.year > today.year || (birthDate.year == today.year && birthDate.month > today.month) || (birthDate.year == today.year && birthDate.month == today.month && birthDate.day >= today.day)) return -days_since(birthDate, today); // 如果出生日期早于今,返回负数 // 否则,返回两者间的差值 return days_since(birthDate, today); } // 辅助函数,用于计算两个日期之间相差的数 int days_since(const struct Date date1, const struct Date date2) { int base_days = (date2.year - date1.year) * 365; // 年份差乘以平均每年的数 int adjust = (date2.month - date1.month) * 30; // 月份差乘以近似的每月数 adjust += date2.day - date1.day; // 考虑闰年 if (date1.year % 4 == 0 && (date1.year % 100 != 0 || date1.year % 400 == 0)) { base_days++; } return base_days + adjust; } int main() { struct Date birthDate; printf("请输入您的出生年月日(格式:YYYY-MM-DD): "); scanf("%d-%d-%d", &birthDate.year, &birthDate.month, &birthDate.day); int days_lived = days_between_dates(birthDate, (struct Date){202X, 12, 31}); // 假设当前日期是年底 printf("您已经生了 %d 。\n", days_lived); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值