Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ISO 8601字符串,而不是日期时间

ISO 8601字符串,而不是日期时间
EN

Stack Overflow用户
提问于 2019-01-24 23:45:00
回答 1查看 625关注 0票数 1

我在其他项目中遇到过这个问题,但现在我们正在使用Django / Python和Vue.js和PostgreSQL。

在我们的模型中,几乎每个' date‘字段都是一个真正的日期,而不是日期时间。业务用户并不关心时间段,事实上,存储任何这样的值都是误导的。税率的生效日期就是一个很好的例子。从用户的角度来看,它在指定日期的午夜生效。

如果我们将其存储为Django DateTimeField或DateField,它需要一个时间部分。它可以是0000h,但它的值对业务没有意义,因为他们永远不需要查看或比较任何与时间部分的内容。如果我们想要存储一个真实的日期时间,将其作为UTC放入数据库中,然后通过自动时区转换以当地时间显示给用户,那么Django功能是非常棒的。但我们没有。如果生效日期是2019年3月1日,则无论用户所在的时区如何,都应该显示生效日期。如果日期存储为日期时间(2019,3,1,0,0,0)并由温哥华的某个用户输入,则对于多伦多的另一个用户来说,它将显示为下一个日历日。这绝对不是我们想要的。我们可以通过将time-part设置为1200h来拼凑它,但是真的吗?

在使用SQL或直接访问模式的工具(例如BI工具)时,我们也会遇到潜在的问题,这取决于数据库中的内部表示。我们如何知道哪个时区适用于DateTime值?

因此,我们正在考虑使用ISO8601格式(YYYY-MM-DD)的Django CharField。它将正确排序,可以很容易地进行比较(或直接在一些工具中,如SQL),并且如果客户愿意使用该标准,则无需重新格式化即可显示。如果我们需要进行日期运算,我们可以使用Python标准库datetime和calendar来进行字符串转换。无论如何,我们都需要使用它们来捕获SQL注入攻击。

我们还需要通过Datepicker处理日期输入,在存储之前转换为ISO 8601字符串,并在显示进行编辑时再次转换回来。

它似乎是表示业务需求的一种更好的方式,而且它消除了任何时区转换问题。

当然有很多关于日期时间和时区处理的评论,但我还没有发现有人使用这种方法来存储真实的日期。我是不是漏掉了一个重要的“问题”?我们在这个项目中已经足够早了,我们可以选择任何一种方式,所以我希望在重构成为一项大任务之前确认这将会起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 00:36:52

你有没有考虑过使用DateField

这将只存储日期部分,而不是时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54357048

复制
相关文章
ISO 8601持续时间格式
例如我们当前有一个需求为,我们需要对数据进行处理,但是数据处理时间为当前的时间减去 3 个月的这个时间间隔。
HoneyMoose
2022/11/15
9220
ISO 8601持续时间格式
ISO 8601持续时间格式
例如我们当前有一个需求为,我们需要对数据进行处理,但是数据处理时间为当前的时间减去 3 个月的这个时间间隔。
HoneyMoose
2022/11/21
1.1K0
ISO 8601持续时间格式
ISO8601时间字符串到时间戳处理
作者:matrix 被围观: 8,903 次 发布时间:2019-06-21 分类:Python 兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
1.7K0
java iso8601 PT1M,iso8601
public static String getISO8601TimestampFromDateStr(String timestamp){
全栈程序员站长
2022/11/02
14.1K0
PostgreSQL ISO 8601
国际标准化组织的国际标准ISO 8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前最新为第三版ISO8601:2004,第一版为ISO8601:1988,第二版为ISO8601:2000。(摘自百度百科)
全栈程序员站长
2022/11/17
9820
一起Polyfill系列:让Date识别ISO 8601日期时间格式
一、什么是ISO 8601日期时间格式   ISO 8601是国际标准化组织制定的日期时间表示规范,全称是《数据存储和交换形式·信息交换·日期和时间的表示方法》。   示例:   1. 2014-12-12T00:00:00.000Z   2. 2014-12-12T00:00:00.000+08   3. 2014-12-12T00:00:00.000+0800   4. 2014-12-12T00:00:00.000+08:00   5. 2004-W17-3   6. 0001-165 详细说明请参考
^_^肥仔John
2018/01/18
1.6K0
ISO-8601 如何解读
如下: 1970-01-01T00:00:00Z 可能是我们最常看到的格式了,这个表示的是一个 Epoch 时间,其实也不完全一定是,因为在上面没有表示出毫秒。
HoneyMoose
2021/08/14
8580
ISO-8601 如何解读
使用Python将时间或者时间间隔转为ISO 8601格式
Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval)并没有提供转换的函数,下面我们动手写一个。 对于时间间隔,ISO 8601的表示形式如下:
卡尔曼和玻尔兹曼谁曼
2019/01/22
2.2K0
使用Python将时间或者时间间隔转为ISO 8601格式
了解一下ISO 8601是什么
上周的组内分享,有朋友介绍一个工具包生成的日期是UTC,需要转成北京时,另外还带了Z,很是不解,组长介绍说这是ISO 8601的日期格式标准。
bisal
2021/09/06
7.6K0
了解一下ISO 8601是什么
SQL函数 DAYOFWEEK
DAYOFWEEK接受日期表达式,并返回与该日期的星期几对应的整数。一周的天数从一周的第一天开始计算;的默认设置是星期天是一周的第一天。因此,默认情况下,返回值表示这些天:
用户7741497
2022/04/02
1.8K0
c++11:使用HowardHinnant/date.h解析ISO8601格式字符串,并解决时区问题
C++11提供了std::get_time函数用于解析时间格式字符串,解析成功后将时间保存在std::tm结构中。 但是对于ISO8601标准中有毫秒精度的字符串比如('2014-11-12T19:12:14.505+0800')是不支持的。 如何解析这种有毫秒精度的时间字符串呢?
10km
2021/09/26
1.2K0
js格式化iso 8601格式的日期为其他格式-处理默认golang time类型格式问题
ISO 8601 格式的时间表示法,常用于表示世界范围内的时间和日期。ISO 8601 格式使用连字符 "-" 分隔日期和时间部分,并以字母 "T" 分隔日期和时间部分,其中 "T" 后面跟着时间部分。在这个时间表示中,"2023-03-09" 表示日期部分,"23:43:43+08:00" 表示时间部分和时区偏移量。其中,"+08:00" 表示相对于 UTC 时间偏移了 8 个小时,也就是北京时间。
唯一Chat
2023/03/10
1.7K0
漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?
2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。
敖丙
2020/03/03
8640
漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?
女朋友让我解释为什么一到年底,部分网站就会出现日期混乱的现象?
2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。
Guide哥
2020/05/07
9680
女朋友让我解释为什么一到年底,部分网站就会出现日期混乱的现象?
iso815中文版_国际标准日期时间格式
严格的来说,这个标题可能不太正确,因为我首先度娘了一下,ISO8601时间格式标准应该类似于:2016-01-18T23:41:00-08:00,而UTC时间格式差不多类似
全栈程序员站长
2022/11/17
9410
SQL函数 WEEK
默认情况下,使用 $HOROLOG 日期(从 1840 年 12 月 31 日开始的正整数或负整数天数)计算周数。因此,周数是逐年计算的,因此第 1 周是完成从上一年最后一周开始的 7 天期间的天数。一周总是从星期日开始;因此,日历年的第一个星期日标志着从第 1 周到第 2 周的变化。如果一年中的第一个星期日是 1 月 1 日,则该星期日是第 1 周;如果一年中的第一个星期日晚于 1 月 1 日,则该星期日是第 2 周的第一天。因此,第 1 周的长度通常少于 7 天。可以使用 DAYOFWEEK 函数确定星期几。一年中的总周数通常为 53,闰年可能为 54。
用户7741497
2022/08/02
1.6K0
java转换字符串为时间_JAVA字符串转日期或日期转字符串
文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进
全栈程序员站长
2022/08/23
2.9K0
spring-boot:对日期(Date)类型数据的序列化
spring将Java 数据类型的序列和反序列化为JSON字符串是依赖jackson(com.fasterxml.jackson.core:jackson-core)库来实现的,对于Java Bean中的Date类型字段,可以使用@JsonFormat注释来指定日期格式,示例如下:
10km
2022/06/07
2.8K0
Python-时间及日期-03-字符串转时间
系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 Python:3.6.0
zishendianxia
2020/03/26
2.9K0
Python-时间及日期-03-字符串转时间
YAML快速入门
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。—百度百科
秋名山码神
2022/12/13
5000

相似问题

日期时间ISO 8601

11

ISO 8601 / Kibana日期时间转换

12

日期时间到ISO 8601,包括时间

21

ISO 8601日期时间

318

如何使用时区而不是时间组件编写ISO 8601日期?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文