android.text.format.DateFormat“EEEE”给出错误的日期名称

时间:2014-06-23 13:28:50

标签: android

我使用android.text.format.DateFormat以可读格式格式化日期,如下所示:

android.text.format.DateFormat df = new android.text.format.DateFormat();
Date current = new Date();
String day = df.format("EEEE", current).toString();

例如今天,23.06.2014是星期一,但这段代码给了星期天。我测试我的应用程序的手机上的日期和时间设置正确。同样12.06.2014这个代码打印为星期五,但星期五是13 ...

5 个答案:

答案 0 :(得分:1)

以下是您可以选择的方法。

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

Log.d("Date->",date);

//Specifically if you want to print day
DateFormat df = new SimpleDateFormat("EEE");
        String date = df.format(Calendar.getInstance().getTime());

        Log.d("------------Date->",date);

 DateFormat df = new SimpleDateFormat("EEE");
 String day= df.format(Calendar.getInstance().getTime());

        Log.d("------------Day->",day);

您可以使用DateFormat模式,例如:

"yyyy.MM.dd G 'at' HH:mm:ss z" ----> 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" -----------> 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"-------> Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"-------> 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"--------------------> 010704120856-0700
"K:mm a, z" -----------------------> 0:08 PM, PDT
"h:mm a" --------------------------> 12:08 PM
"EEE, MMM d, ''yy" ----------------> Wed, Jul 4, '01

有关详情,请参阅 - > Java Doc

答案 1 :(得分:1)

时区

我的猜测是时区。您的计算机/ JVM设置为默认时区,与您想到的时区不同。

更好的做法是始终明确指定所需的时区,而不是依赖隐式默认值。

约达时间

以下是Joda-Time 2.3中的示例代码。

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime nowParis = DateTime.now( timeZone );
DateTime nowUtc = now.withZone( DateTimeZone.UTC );

答案 2 :(得分:0)

使用SimpleDateFormat代替dateFormat

   SimpleDateFormat df = new SimpleDateFormat("EEEE");
   Date current = new Date();
   String day = df.format(current).toString();

并导入java.text.SimpleDateFormat

答案 3 :(得分:0)

使用java日期格式。

SimpleDateFormat inFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = inFormat.parse(input);
SimpleDateFormat outFormat = new SimpleDateFormat("EEEE");
String day = outFormat.format(date); 

问候。

答案 4 :(得分:0)

对不起大家,只是写了错误的一年到sqlite数据库......