我讨厌承认这一点,但我无法理解基本的日期格式。我知道我只是过度思考这个问题,但我看到的文档完全让我失望。我想要做的只是显示格式为“2013年2月20日星期三”的当前日期。到目前为止我所拥有的是:
TextView textView = (TextView) findViewById(R.id.currentDate);
String now = DateFormat.getDateInstance().format(new Date());
textView.setText(now);
这会产生类似“2013-2-20”的东西,这是一个很好的第一步,但不是我想要的。在查看文档时,我感到困惑,因为DateFormat
文档都说使用整数来表示SHORT
,MEDIUM
,LONG
或DEFAULT
。什么?确切地说,我会把这个论点放在哪里?以及/哪个整数表示SHORT
vs LONG
?这一切都没有意义,我觉得这是一个完整的白痴,因为我知道这是非常明显的。多年来我使用PHP的日期格式来解决这个问题,我确信我的旧习惯完全阻止了我看到它的简单性。
答案 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”(或本地化的等效物)。