首页 > 解决方案 > 为什么日期时间变成数字?如何在结果中生成日期时间格式?

问题描述

我正在用烧瓶制作 api,但我遇到了一个问题。我不知道为什么日期时间变成一个数字?这是我的代码:

# -*- coding: utf-8 -*-
from flask import Flask, g, render_template, request, jsonify, json, current_app, redirect, url_for
from flask import make_response
import flask
from os.path import join, dirname, realpath
import logging
import os
import chardet
from chardet.universaldetector import UniversalDetector
import numpy as np
import pandas as pd
import sys
import tempfile


app = Flask(__name__)

@app.route('/api/tier_change',methods = ['POST'])
def index3():
    VIP_CODE = request.form['VIP_CODE']
    CHANGE_TYPE = request.form['CHANGE_TYPE']
    CHANGE_TIME = request.form['CHANGE_TIME']
    BEFORE_TIER_CODE = request.form['BEFORE_TIER_CODE']
    AFTER_TIER_CODE = request.form['AFTER_TIER_CODE']
    BEFORE_EXPIRED_DATE = request.form['BEFORE_EXPIRED_DATE']
    AFTER_EXPIRED_DATE = request.form['AFTER_EXPIRED_DATE']
    a = {'VIP_CODE': [VIP_CODE],
        'CHANGE_TYPE':[CHANGE_TYPE],
        'CHANGE_TIME':[CHANGE_TIME],
        'BEFORE_TIER_CODE':[BEFORE_TIER_CODE],
        'AFTER_TIER_CODE':[AFTER_TIER_CODE],
        'BEFORE_EXPIRED_DATE':[BEFORE_EXPIRED_DATE],
        'AFTER_EXPIRED_DATE':[AFTER_EXPIRED_DATE]}
    df = pd.DataFrame(data=a)
    df['New_date_start'] = pd.to_datetime(df['AFTER_EXPIRED_DATE'], errors='coerce', format='%Y-%m-%d')
    df['New_date_start'] = df['New_date_start'] - pd.DateOffset(years=1) - pd.DateOffset(days=1)
    result = df.to_json(orient="records")
    parsed = json.loads(result)
    if parsed:
        print(df)
        print(result)
        print(parsed)
        print(json.dumps(parsed))
        return json.dumps(parsed) 
    else:
        return 'not valid'

if __name__ == '__main__':
    app.config['JSON_AS_ASCII'] = False
    app.run(debug=True, host='0.0.0.0', port=5010)

样本输入:

VIP_CODE:03K100000882
CHANGE_TYPE:Renew
BEFORE_TIER_CODE:FO
AFTER_TIER_CODE:FO
BEFORE_EXPIRED_DATE:2021-09-04
AFTER_EXPIRED_DATE:2022-09-04
CHANGE_TIME:2021-09-07

结果:

[{"VIP_CODE":"03K100000882","CHANGE_TYPE":"Renew","CHANGE_TIME":"2021-09-07","BEFORE_TIER_CODE":"FO","AFTER_TIER_CODE":"FO","BEFORE_EXPIRED_DATE":"2021-09-04","AFTER_EXPIRED_DATE":"2022-09-04","New_date_start":1630627200000}]

New_date_start 是数字。这是一个约会。我已经检查了日期范围。New_date_start 是日期格式。这是df:

       VIP_CODE CHANGE_TYPE CHANGE_TIME BEFORE_TIER_CODE AFTER_TIER_CODE BEFORE_EXPIRED_DATE AFTER_EXPIRED_DATE New_date_start
0  03K100000882       Renew  2021-09-07               FO              FO          2021-09-04         2022-09-04     2021-09-03

我怎样才能解决这个问题?那里发生了什么?

标签: pythonpandasdatetime

解决方案


result = df.assign(**df.select_dtypes(['datetime']).astype(str).to_dict('list')).to_json(orient="records")

推荐阅读