使用java.text.DateFormat格式化日期

时间:2013-02-20 21:43:51

标签: java android date-format

我讨厌承认这一点,但我无法理解基本的日期格式。我知道我只是过度思考这个问题,但我看到的文档完全让我失望。我想要做的只是显示格式为“2013年2月20日星期三”的当前日期。到目前为止我所拥有的是:

TextView textView = (TextView) findViewById(R.id.currentDate);
String now = DateFormat.getDateInstance().format(new Date());
textView.setText(now); 

这会产生类似“2013-2-20”的东西,这是一个很好的第一步,但不是我想要的。在查看文档时,我感到困惑,因为DateFormat文档都说使用整数来表示SHORTMEDIUMLONGDEFAULT。什么?确切地说,我会把这个论点放在哪里?以及/哪个整数表示SHORT vs LONG?这一切都没有意义,我觉得这是一个完整的白痴,因为我知道这是非常明显的。多年来我使用PHP的日期格式来解决这个问题,我确信我的旧习惯完全阻止了我看到它的简单性。

2 个答案:

答案 0 :(得分:3)

您可以将属性(SHORT,LONG等)放在DateFormat.getDateInstance();中,如下所示:

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);

SHORT是完全数字的,例如12.13.52或3:30 pm

MEDIUM更长,例如1952年1月12日

LONG更长,例如1952年1月12日或下午3:30:32

FULL已完全指定,例如公元1952年4月12日星期二或太平洋标准时间下午3:30:42。

可以找到此信息here

答案 1 :(得分:1)

如果您习惯使用传统语言,那么您所缺少的关键概念就是Java中的日期/时间处理被严重破坏。不只是一次,而是两次,在两个单独的破碎化身中。加上一些事后的乐队助手助手类,如DateUtils。您需要达成的关键洞察力是:与Java中的日期和时间无关,这很简单。

请尝试使用SimpleDateFormat。不,它实际上并不简单。但默认设置会产生可行的本地化日期/时间(如果不是很漂亮的话)。

    DateFormat format = SimpleDateFormat.getDateTimeInstance(),

while产生:“1969年12月31日下午4:00:00”(或本地化的等效物)。