هل يمكنني تغيير dateFormat.Short لتشمل ثواني أو شيء مماثل؟

StackOverflow https://stackoverflow.com/questions/1846059

  •  12-09-2019
  •  | 
  •  

سؤال

في طلبي، أنا أستخدم رمز مثل هذا:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
String s = df.format(d);

لتنسيق التواريخ في تطبيق يستخدم عبر ألواح مختلفة. أرغب في ذلك، أحيانا، أضف ثوان إلى ذلك، لكنني لا أريد فقط تحديد تنسيق محدد واحد باستخدام SimpleDateFormat كما أفقد قوة التنسيق المستند إلى اللغة.

لذلك، أي شخص حصل على أي أفكار كيفية إجراء تغيير بسيط في التاريخ المنسق من اللغة؟

هتافات،

كريس

هل كانت مفيدة؟

المحلول

الحل الوحيد إلى الأمام المستقيم الذي وجدته هو استخدام FieldPosition:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
StringBuffer sb = new StringBuffer();
FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD);
sb = df.format(d, sb, fp);
sb.insert( fp.getEndIndex(), new SimpleDateFormat(":ss").format(d) );
String s = sb.toString();

هذا هو العثور على موقف حقل الدقيقة في السلسلة ثم السماح لي بإضافة الثواني مباشرة بعد ذلك. المشاكل الحقيقية الوحيدة التي يمكنني رؤيتها مع هذا، بصرف النظر عن كونها قبيحة قليلا، هو أن ":" قد لا يكون الفاصل الصحيح وقد يكون لديك بالفعل ثوان في ذلك. لذلك يمكن لأي شخص أن يرى إجابة أفضل؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top