编写一个随机生成日期的功能

随机生成十个日期,年份从1970年开始到2030年,考虑到闰年时:2月份是29天,非闰年时:2月份是28天,并显示出结果。

按题目要求用go编写的结果

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func init() {
	//初始化随机种子
	rand.Seed(time.Now().UnixNano())
}

var era = "您要的第%d个随机日期:"  //提示语

//随机生成十个日期
func main() {
	var startYear = 1970  //开始年份
	var endYear = 2030  //结束年份
	var year = 0  //年
	var month = 0  //月
	var day = 0  //日
	var count = 1 //统计次数

	//循环10个1970-2030年的随机日期
	for yearNum := endYear - startYear; count <= 10; {
		//随机年份
		year = startYear + rand.Intn(yearNum)
		//随机月份
		month = rand.Intn(12) + 1
		//随机日份,考虑不同月份时,有天数差异情况
		switch month {
		case 2:
			if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
				day = rand.Intn(29) + 1
			} else {
				day = rand.Intn(28) + 1
			}
		case 1,3,5,7,8,10,12:
			day = rand.Intn(31) + 1
		default:
			day = rand.Intn(30) + 1
		}

		fmt.Printf(era,count)
		fmt.Printf("%d年%d月%d日 \n",year,month,day)
		count ++  //累计次数
	}
}

按题目要求用rust编写的结果

use rand::Rng;

fn main() {
    let start_year = 1970; //开始年份
    let end_year = 2030; //结束年份
    let mut year; //年
    let mut month; //月
    let mut day; //日
    let mut count = 1; //统计次数

    while count <= 10 {
    	//随机年份
        year = rand::thread_rng().gen_range(start_year..end_year);
        //随机月份
        month = rand::thread_rng().gen_range(1..12);
        
        //随机日份,考虑不同月份时,有天数差异情况
        match month {
            2 => {
                if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
                    day = rand::thread_rng().gen_range(1..29);
                } else {
                    day = rand::thread_rng().gen_range(1..28);
                }
            },
            1|3|5|7|8|10|12 => {
                day = rand::thread_rng().gen_range(1..31);
            },
            _ => {
                day = rand::thread_rng().gen_range(1..30);
            }
        };
        print!("您要的第{}个随机日期:",count);
        println!("{}年{}月{}日",year,month,day);
        count += 1; //累计次数
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值