ISO8601时间格式转时间戳代码(js、python)

js:

function ISO8601DateStr2Date(string) {

    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +

        "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +

        "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";

    if (string) {

        var d = string.match(new RegExp(regexp));

        var offset = 0;

        var date = new Date(d[1], 0, 1);

        if (d[3]) {

            date.setMonth(d[3] - 1);

        }

        if (d[5]) {

            date.setDate(d[5]);

        }

        if (d[7]) {

            date.setHours(d[7]);

        }

        if (d[8]) {

            date.setMinutes(d[8]);

        }

        if (d[10]) {

            date.setSeconds(d[10]);

        }

        if (d[12]) {

            date.setMilliseconds(Number("0." + d[12]) * 1000);

        }

        if (d[14]) {

            offset = (Number(d[16]) * 60) + Number(d[17]);

            offset *= ((d[15] == '-') ? 1 : -1);

        }

        offset -= date.getTimezoneOffset();

        var time = (Number(date) + (offset * 60 * 1000));

        return time;

    } else {

        return null;

    }

}


python:

def ISO8601DateStr2Date(datestring, format='%Y-%m-%dT%H:%M:%S.%fZ',timespec='milliseconds'):

    """

    ISO8601时间转换为时间戳

    :param datestring:iso时间字符串 2019-03-25T16:00:00.000Z,2019-03-25T16:00:00.000111Z

    :param format:%Y-%m-%dT%H:%M:%S.%fZ;其中%f 表示毫秒或者微秒

    :param timespec:返回时间戳最小单位 seconds 秒,milliseconds 毫秒,microseconds 微秒

    :return:时间戳 默认单位秒

    """

    tz = pytz.timezone('Asia/Shanghai')

    utc_time = datetime.datetime.strptime(datestring, format)  # 将字符串读取为 时间 class datetime.datetime

    time = utc_time.replace(tzinfo=pytz.utc).astimezone(tz)

    times = {

        'seconds': int(time.timestamp()),

        'milliseconds': round(time.timestamp() * 1000),

        'microseconds': round(time.timestamp() * 1000 * 1000),

    }

    return times[timespec]

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容