python - 为什么日期时间变成数字?如何在结果中生成日期时间格式?
问题描述
我正在用烧瓶制作 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
我怎样才能解决这个问题?那里发生了什么?
解决方案
result = df.assign(**df.select_dtypes(['datetime']).astype(str).to_dict('list')).to_json(orient="records")
推荐阅读
- android - 找不到要加载的 DSO:libjscexecutor.so
- python - ValueError:形状为 (32, 3) 的目标数组被传递为形状 (None, 2) 的输出,同时用作损失`binary_crossentropy`。在 Keras 模型中
- java - 如何从自定义列表视图中获取特定视图和更改属性?
- r - 在 ggplot 上标记 inf 和 -inf 值
- c++ - 有效地从文本文件中读取带有字符串索引的巨大二维数组(矩阵)
- javascript - 未使用预加载的图像
- laravel - Laravel Echo (Server) Socket IO - 从 HTTP 切换到 HTTPS
- javascript - 使用 Karma 设置自定义浏览器安装
- typescript - 不再可能将数据类型映射到 TypeScript 中的函数参数?
- aws-sdk - 使用 boto3 创建 AWS 资源组