2017-12-19 7 views
3

は、現在、当社のOdoo CRM上の日付形式は11/20/2017 13:03:41のように見えますが、私は3 Jul 3:00PMOdoo datetimeフィールドに異なる日付形式を表示する方法は?

私たちは、私が検索しました

<field name="pickup_time"/> 

形でこのフィールドを表示するようJuly 3rd 3:00PMにし、別の場所ショーにフォーマットを表示したいですフォーマットを変更する方法を見つけるにはたくさんの方法がありますが、主にローカル設定を変更することです。永久にどこでも設定できます。異なる場所の2つの異なるフォーマットを持つような、私たちが望むものを解決しないでしょう。

+0

あなたは – ChesuCR

+0

をする形式で、計算フィールドを作成することができます計算フィールド?コーディング経由で?ビアコーディングを使用している場合は、任意のサンプルですか? – Basit

+0

はい、それをPythonで宣言する必要があります。 Odooの書類を確認してください – ChesuCR

答えて

1

Odooに沿って使用されるデフォルトの日付形式はDEFAULT_SERVER_DATETIME_FORMATです。これは、次のコードのようにフィールドを宣言するのであれば、その定数が使用されようとしている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) 

ファイルに定義されています。

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

だから、あなたはあなたができる別の形式を使用したい場合そのカスタム形式の計算フィールドを作成します。いくつかの日付関数を使用する必要があります:strftime(文字列へのオブジェクト)とstrptime(文字列からオブジェクトへ)。フォーマットコードは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"/> 
関連する問題