[c++11]随机生成时间字符串,格式为“%Y%m%d%H%M%S“ 您所在的位置:网站首页 c语言随机字符怎么生成数字格式 [c++11]随机生成时间字符串,格式为“%Y%m%d%H%M%S“

[c++11]随机生成时间字符串,格式为“%Y%m%d%H%M%S“

2024-07-01 03:16| 来源: 网络整理| 查看: 265

std::string get_random_time { //当前时间戳 auto now = std::chrono::system_clock::now(); std::time_t nowTime = std::chrono::system_clock::to_time_t(now); //random year std::random_device rd; std::mt19937 gen(rd()); int randomYear; std::uniform_int_dictribution yearDis(2024, 2030); randomYear = yearDis(gen); //random month std::uniform_int_dictribution monthDis(1, 12); int randomMonth = monthDis(gen); //random day std::uniform_int_dictribution dayDis(1, 28); int randomDay = dayDis(gen); //random min std::uniform_int_dictribution minDis(0, 59); int randomMinute = minDis(gen); //random sec std::uniform_int_dictribution secDis(0, 59); int randomSecond = secDis(gen); std::tm* localTime = std::localtime(&nowTime); localTime->tm_year = randomYear - 1900; //年份要减1900 localTime->tm_mon = randomMonth - 1; //月份要减1 localTime->tm_mday = randomDay; localTime->tm_min = randomMinute; localTime->tm_sec = randomSecond; char buffer[80]; std::strftime(buffer, 80, "%Y%m%d%H%M%S", localTime); return std::string(buffer); }

注:

1. localTIme->tm_year = randomYear - 1900;

这里年份需要减去1900,是因为C++中tm结构体中的tm_year字段表示的是自1900年以来的年数。这种设计是为了节省内存空间,并且在C语言中已经存在了很长时间,所以在C++中也保留了这种设计。

2. loaclTime->tm_mon = randomMonth - 1;

这里月份要减1是因为在 C++ 中的tm结构体中的tm_mon字段表示的是月份,范围是从 0 到 11。

3. 生成random day时,范围我直接给了1~28。这里按个人需要修改。

附上时间字符串进行比较的方法:[c++]根据时间字符串比较时间先后顺序-CSDN博客



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有