当前位置: 首页 > article >正文

记录:将时间转化为浮点数的函数

最近做的大作业里面有将用户输入的时间(包括年月日小时分钟)转化为浮点数的内容

实际上是之前用.csv文件里的数据格式是用浮点数记录时间的,但是新的作业里面用户输入的并不是浮点数,后面老师给出了新的.csv文件,但是此时我早已做完了

本来是想要用time.h/ctime头文件里面的time_t或者tm数据类型,但是time_t实际上是long类型,而tm数据类型也和浮点数相差甚远,虽然有一些函数可以用,emmmmmm,反正当时我用了一下报错了,当场决定自己写一个函数

但是当时写的函数是比较粗糙的,因为你不得不考虑到该死的闰年的日期变动问题以及不同月份的天数的问题,而我当时直接把年当365天算,月按30天算

乐死了

然后在自学数据分析的时候略感无聊,便决定回头写一下这个函数

先上代码:

bool isLeap(const int yy){
    return !(yy % 400) || (yy % 100 && !(yy % 4));
}
double timeToDouble(const int yy, const int mm, const int dd, const int h, const int m){
    const double month[] = {0.0, 31.0, 28.0, 31.0, 30.0, 31.0, 30.0, 31.0, 31.0, 30.0, 31.0, 30.0, 31.0};
    double ans = 0.0;
    for(int y = 1900; y < yy; y++)
        ans += isLeap(y) ? 366.0 : 365.0;
    for(int i = 1; i < mm; i++)
        ans += month[i];
    if(mm > 2 && isLeap(yy)) ans += 1.0;
    ans += 1.0 * dd;
    ans += (1.0 * h + 1.0 * m / 60.0) / 24.0;
    return ans;
}

仅作记录

这里按照的转化标准是我参考time_t的转化标准写的,然后为了让.csv里的数据更合理,年份是减去1900

转化为浮点数之后也容易比较日期的早晚问题了,返回值是以小时为单位的,看代码也容易看出来

只是当时我觉得麻烦懒得写


http://www.kler.cn/news/360789.html

相关文章:

  • SonarQube快速实践
  • JAVA集合知识总结(三)
  • 1280,学生们参加各科测试的次数
  • 苍穹外卖学习笔记(二十七)
  • 循序渐进丨MogDB 5.0 远程访问 MogDB/Oracle 数据库的简便方法(使用@符号)
  • Node Checking - Checkboxes and Radio Buttons 节点检查 - 复选框和单选按钮
  • 一款企业级的低代码开发平台,含流程引擎、表单引擎、权限管理
  • 重新阅读《马说》,感悟“伯乐相马”背后的被选择与选择的大智慧
  • leetcode解题 - #用栈实现队列 #用队列实现栈 #循环队列
  • 【分布式技术】中间件-zookeeper安装配置
  • Python编程语言:探索其无限可能的旅程
  • 集控中心操作台的应用如何确保场站安全运行
  • 鸿蒙开发:实现一个超简单的网格拖拽
  • 【论文阅读】SAM 2: 分割一切图像和视频
  • 【MySQL】InnoDB存储引擎中的锁
  • 一个Docker管理工具,让您的Docker容器自动更新
  • Redis 数据类型Geospatial Indexes(地理空间索引)
  • PLC_博图系列☞基本指令”TP:启动脉冲定时器“
  • Flume面试整理-配置文件格式
  • 性能工具之 HAR 格式化转换JMeter JMX 脚本文件