将unix时间转换为日期

iZume

我正在执行一项功能,以将Unix时间转换为日期(dd-mm-yyyy)

stock UnixToTime(x)
{
    new year = 1970;
    new dia = 1;
    new mes = 1;

    while(x > 86400)
    {
        x -= 86400;
        dia ++;

        if(dia == getTotalDaysInMonth(mes, year))
        {
            dia = 1;
            mes ++;

            if (mes >= 12) 
            {
                year ++;
                mes = 1;
            }
        }
    }
    printf("%i-%i-%i", dia, mes, year);
    return x;
}

但没有用。

我正在用1458342000(今天...)测试功能,但是打印> 13-3-2022,这是什么错误?

#define IsLeapYear(%1)      ((%1 % 4 == 0 && %1 % 100 != 0) || %1 % 400 == 0)

getTotalDaysInMonth是这个;

stock getTotalDaysInMonth(_month, year)
{
    new dias[] = {
        31, // Enero
        28, // Febrero
        31, // Marzo
        30, // Abril
        31, // Mayo
        30, // Junio
        31, // Julio
        31, // Agosto
        30, // Septiembre
        31, // Octubre
        30, // Noviembre
        31  // Diciembre
    };
    return ((_month >= 1 && _month <= 12) ? (dias[_month-1] + (IsLeapYear(year) && _month == 2 ? 1 : 0)) : 0);
}
chqrlie

您的算法有几个问题:

  • while循环测试应为while(x >= 86400),否则您将在午夜一天之前离开。
  • 您只应该在新年的时候跳过mes > 12,而不是>=
  • 盘点天数的同样问题:如果if (dia > getTotalDaysInMonth(mes, year))不跳过每个月的最后一天,则应勾选月份。
  • 的代码getTotalDaysInMonth(mes, year)似乎还可以。
  • 该代码IsLeapYear可以比通用Gregorian规则更简单,因为在1970年和2099年之间没有例外。您仍然应该发布它,以防万一那里有错误。

这是更正的版本:

stock UnixToTime(x) {
    new year = 1970;
    new dia = 1;
    new mes = 1;

    while (x >= 86400) {
        x -= 86400;
        dia++;
        if (dia > getTotalDaysInMonth(mes, year)) {
            dia = 1;
            mes++;
            if (mes > 12) {
                year++;
                mes = 1;
            }
        }
    }
    printf("%i-%i-%i\n", dia, mes, year);
    return x;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将UNIX Varchar转换为日期时间

来自分类Dev

pyspark 将 Unix 时间转换为日期

来自分类Dev

如何将Unix时间戳转换为日期时间

来自分类Dev

将Unix时间戳转换为日期时间

来自分类Dev

将UNIX时间戳转换为日期时间(javascript)

来自分类Dev

熊猫:将Unix时间从0开始转换为日期时间

来自分类Dev

如何将日期时间转换为UNIX命令日期

来自分类Dev

将Python日期转换为Unix时间戳

来自分类Dev

甲骨文将Unix时代的时间转换为日期

来自分类Dev

将日期unix转换为时间戳

来自分类Dev

将字符串日期转换为Unix时间

来自分类Dev

POSTGRESQL将日期转换为unix时间戳int

来自分类Dev

将数据库日期转换为Unix时间戳

来自分类Dev

将日期转换为R中的Unix时间

来自分类Dev

将实际日期转换为Unix时间戳PHP

来自分类Dev

将Epoch或Unix时间戳转换为日期ANDROID

来自分类Dev

将标准日期 "DD/MM/YYYY" 转换为 UNIX 时间

来自分类Dev

将日期转换为 UNIX 时间戳 excel vba

来自分类Dev

一次将Unix纪元时间的Pandas日期时间从Unix时代转换为东部时间

来自分类Dev

javascript日期格式转换(将全文日期转换为unix时间戳)

来自分类Dev

Netezza-如何将时间戳/日期时间转换为13位UNIX时间毫秒?

来自分类Dev

在Logstash中将日期转换为UNIX时间

来自分类Dev

将时间转换为Unix时间戳

来自分类Dev

Python:将日期时间戳转换为纪元Unix时间并找出剩余天数?

来自分类Dev

熊猫将具有unix时间戳(以毫秒为单位)的行转换为日期时间

来自分类Dev

使用文化信息将Unix时间转换为特定的日期时间格式

来自分类Dev

将英国式日期和时间转换为UNIX时间戳(PHP> 5.3)

来自分类Dev

如何将本地日期时间字符串转换为Unix时间戳(GMT)?

来自分类Dev

JMeter-如何将人类可读的日期时间转换为Unix时间戳

Related 相关文章

  1. 1

    将UNIX Varchar转换为日期时间

  2. 2

    pyspark 将 Unix 时间转换为日期

  3. 3

    如何将Unix时间戳转换为日期时间

  4. 4

    将Unix时间戳转换为日期时间

  5. 5

    将UNIX时间戳转换为日期时间(javascript)

  6. 6

    熊猫:将Unix时间从0开始转换为日期时间

  7. 7

    如何将日期时间转换为UNIX命令日期

  8. 8

    将Python日期转换为Unix时间戳

  9. 9

    甲骨文将Unix时代的时间转换为日期

  10. 10

    将日期unix转换为时间戳

  11. 11

    将字符串日期转换为Unix时间

  12. 12

    POSTGRESQL将日期转换为unix时间戳int

  13. 13

    将数据库日期转换为Unix时间戳

  14. 14

    将日期转换为R中的Unix时间

  15. 15

    将实际日期转换为Unix时间戳PHP

  16. 16

    将Epoch或Unix时间戳转换为日期ANDROID

  17. 17

    将标准日期 "DD/MM/YYYY" 转换为 UNIX 时间

  18. 18

    将日期转换为 UNIX 时间戳 excel vba

  19. 19

    一次将Unix纪元时间的Pandas日期时间从Unix时代转换为东部时间

  20. 20

    javascript日期格式转换(将全文日期转换为unix时间戳)

  21. 21

    Netezza-如何将时间戳/日期时间转换为13位UNIX时间毫秒?

  22. 22

    在Logstash中将日期转换为UNIX时间

  23. 23

    将时间转换为Unix时间戳

  24. 24

    Python:将日期时间戳转换为纪元Unix时间并找出剩余天数?

  25. 25

    熊猫将具有unix时间戳(以毫秒为单位)的行转换为日期时间

  26. 26

    使用文化信息将Unix时间转换为特定的日期时间格式

  27. 27

    将英国式日期和时间转换为UNIX时间戳(PHP> 5.3)

  28. 28

    如何将本地日期时间字符串转换为Unix时间戳(GMT)?

  29. 29

    JMeter-如何将人类可读的日期时间转换为Unix时间戳

热门标签

归档