ʕ•ᴥ•ʔ RUNNINGJ

接口中的时间应该采用什么格式

看到一片篇文章:

Designing a REST API: Unix time vs ISO-8601

讨论在接口中,应该使用unix时间戳还是ISO-8601这样可读形式。文章建议,采用ISO-8601,理由是,可读性更重要。

自己在日常业务中的API中都采用的unix时间戳,暂时不想改变。深入思考,又觉得应该保留unix时间戳,理由是, unix时间戳能减少沟通成本,API的开发和使用往往是不同的人,沟通是一个显著的成本。unix时间戳只有一种形式,而可读的时间串很多形式,日常使用中往往不采用ISO-8601的形式。

但在调试的时候,unix时间戳确实让人头疼,为了缓解这个问题,遂写了一个shell函数punixtime,快速翻译unix时间戳。函数实现如下:

function punixtime() {
    while [ $# -ge 1 ]
    do
        ts=$1; shift
        if [[ $ts -ge 1000000000000 ]]
        then
            ts=${ts:0:10}
        fi
        date -r $ts +"%Y-%m-%d %H:%M:%S"
    done
}

其实,大多数时候,date -r <seconds>也能满足需求。需要注意的是date的参数是秒,大多数unix时间戳是毫秒。

#技术