2017-12-19 22 views
3

현재 우리 Odoo CRM의 날짜 형식은 11/20/2017 13:03:41처럼 보이지만 나는 3 Jul 3:00PMOdoo datetime 필드에 다른 날짜 형식을 표시하는 방법은 무엇입니까?

우리는 내가 검색 한

<field name="pickup_time"/> 

형태이 필드를 보여로 July 3rd 3:00PM에 다른 장소 쇼 형식을 표시 할 형식을 변경하는 방법을 찾는 방법은 많지만 주로 지역 설정에서 변경하는 것이므로 어디에서나 영구적으로 설정이 가능합니다. 서로 다른 장소에 대해 서로 다른 두 가지 형식을 갖는 것과 같이 우리가 원하는 것을 해결할 수 없습니다.

+0

당신은 – ChesuCR

+0

을 원하는 형식의 계산 된 필드를 만들 수 있습니다 계산 된 필드? 코딩을 통해? 거기에 어떤 샘플을 통해 그 코딩을 통해 ... – Basit

+0

예, 당신은 파이썬으로 선언해야합니다. Odoo 설명서를 확인하십시오 – ChesuCR

답변

1

Odong을 따라 사용 된 기본 상수 날짜 형식은 DEFAULT_SERVER_DATETIME_FORMAT입니다. 당신은 당신이 할 수있는 다른 형식을 사용하려는 경우 그래서

pickup_time = fields.Datetime(
    string="Pickup time", 
) 

: 당신이 상수를 사용하는 것이라는 것을 다음 코드처럼 필드를 선언하는 경우 이것은 misc.py

DEFAULT_SERVER_DATE_FORMAT = "%Y-%m-%d" 
DEFAULT_SERVER_TIME_FORMAT = "%H:%M:%S" 
DEFAULT_SERVER_DATETIME_FORMAT = "%s %s" % (
    DEFAULT_SERVER_DATE_FORMAT, 
    DEFAULT_SERVER_TIME_FORMAT) 

그래서 파일에 정의되어 있습니다 해당 사용자 지정 형식의 계산 된 필드를 만듭니다. 일부 날짜 함수 (strftime (string to object) 및 strptime (string to object))를 사용해야합니다. 형식 코드는 this python documentation page

from datetime import datetime 
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT 

[...] 

pickup_time_formated = fields.Char( # it is going to be a readonly field 
    string='Pickup time formated', 
    compute='_compute_pickup_time_formated' 
) 

@api.multi 
@api.depends('pickup_time') 
def _compute_pickup_time_formated(self): 
    for record in self: 
     date = record.pickup_time 
     date_obj = datetime.strptime(date, DEFAULT_SERVER_DATETIME_FORMAT) # to convert it in a date object 

     v = date_obj.day % 10   # to get the remainder of the operation 
     if v == 1: 
      ordinal_suffix = 'st' 
     elif v == 2: 
      ordinal_suffix = 'nd' 
     elif v == 3: 
      ordinal_suffix = 'rd' 
     else: 
      ordinal_suffix = 'th' 

     # format 'July 3rd 3:00PM' 
     record.pickup_time_formated = datetime.strftime(date_obj, '%B %d' + ordinal_suffix + ' %I:%M %p') 

     # format '3 Jul 3:00PM' 
     # record.pickup_time_formated = datetime.strftime(date_obj, '%d %b %I:%M %p'), 

의 바닥에 거의 설명되어 있습니다 그리고 당신은 XML 형식의 새로운 필드를 표시 할 수 있습니다 :

<field name="pickup_time_formated"/>