Django休息框架datetime字段格式

Mir*_*lic 11 django ios django-rest-framework swift

我用这个字段:

ordered_date = serializers.DateTimeField(format="iso-8601", required=False, read_only=True)
Run Code Online (Sandbox Code Playgroud)

当我去休息时,我有时间:

"ordered_date": "2015-10-22T19:50:08"
Run Code Online (Sandbox Code Playgroud)

但是当我序列化日期然后用GCM推送它时,它会增加毫秒(2015-10-22T19:53:43.777171),我该如何解决这个问题,我只需要使用一种格式,而不是与这两种格式混合使用.

我怎样才能解决这个问题?

我将它用于ios swift应用程序.

Rah*_*pta 23

您可以formatordered_date具有值的字段指定参数,作为表示输出格式的字符串.

ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S", required=False, read_only=True)
Run Code Online (Sandbox Code Playgroud)

例如:

In [1]: from rest_framework import  serializers

In [2]: from datetime import datetime

In [3]: class XYZSerializer(serializers.Serializer): # define a serializer with a datetime field
   ...:     ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S")
   ...:    

In [4]: x = XYZSerializer(data={'ordered_date':datetime.now()})

In [5]: x.is_valid()
Out[5]: True

In [6]: x.data # contains the datetime field in the desired format
Out[6]: OrderedDict([('ordered_date', '2015-10-22T18:17:51')])
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`DATETIME_FORMAT`(API返回的格式)和`DATETIME_INPUT_FORMATS`(API接受的格式列表)在`REST_FRAMEWORK`设置中设置全局默认值. (7认同)

C.K*_*.K. 9

感谢@Red-Tune-84 的评论,我自定义了所有日期时间字段的格式。

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S",
    ....
}
Run Code Online (Sandbox Code Playgroud)