[c++11]随机生成时间字符串,格式为“%Y%m%d%H%M%S“ | 您所在的位置:网站首页 › c语言随机字符怎么生成数字格式 › [c++11]随机生成时间字符串,格式为“%Y%m%d%H%M%S“ |
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 实验室设备网 版权所有 |