[Java] f: كونفيرتداتيتيمي يعرض خطأ التاريخ


Answers

وفقا لمواصفات جسف، f: كونفيرتداتيتيمي الافتراضي إلى التوقيت أوتك (بغض النظر عن أي توقيت المنطقة فم)، والذي يختلف عن التوقيت الخاص بك عن طريق -1 ساعة (الوقت القياسي) أو -2 ساعة (وقت الصيف).

نحن نستخدم تطبيق صفحة نطاق الفول مع خاصية توقيت مثل هذا:

public TimeZone getTimeZone() {
    return TimeZone.getDefault();
}

ثم نستخدم الملكية في تعبير إل:

<ice:outputText value="#{deliveryDate}">
    <f:convertDateTime type="both" timeZone="#{Application.timeZone}" />
</ice:outputText>

والميزة هي أنها تنظر في الوقت القياسي / الصيف تلقائيا.

Question

هذا السؤال له إجابة هنا:

في تطبيق الويب الخاص بي أنا استرداد البيانات باستخدام الإسبات وعرضه في داتاتابل ريتشفاسيس.

في بلدي الخلية الجدول هناك حقل من نوع "تاريخ". عند طباعة هذا الحقل إلى سجل في فول، فإنه يظهر التاريخ الصحيح من قاعدة البيانات (على سبيل المثال 2010-04-21). ولكن في الأغنياء: داتاتابل أنه يظهر مثل هذا:

4/20/10

لذلك هناك تناقض من 1 يوم!

وأضافت تحويل "f: كونفيرتاتداتيمي" وتعيين السمة "نوع" إلى "على حد سواء" من أجل عرض الوقت أيضا. حتى الآن فإنه يظهر:

4/20/10 10:00:00 بيإم

قانون "f: كونفيرتاتداتيمي" لقد استخدمت:

<f:convertDateTime locale="locale.US" type="both" dateStyle="short"/>

لذلك يبدو وكأنه و: كونفيرتداتيتيمي يحلم بعض الوقت لأنه لا يوجد معلومات الوقت في حقل الخلية الجدول!

ما الخطأ الذي افعله؟ ما الذي يجب القيام به لعرض التاريخ الصحيح؟

شكرا توم




كان لدينا نفس المشكلة وانتهى الأمر مع كتابة محول جسف جديد يستخدم سيمبلداتيفورمات التي تم إنشاؤها باستخدام new SimpleDateFormat(String pattern) لتحويل التاريخ.