Java/Android:如何格式化日期?

sin*_*rba -1 java android

我喜欢SupportDate在我的PHP项目中有一个类,像工具箱一样使用它,所以我也会在我的Android项目中使用它.

长话短说:

这是SupportDate班级:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * Created by Alessandro on 28/06/2015.
 */
public class SupportDate {

    // Suppress default constructor for noninstantiability
    private SupportDate() {
        throw new AssertionError();
    }

    public static String getCurrentDate(String format) {
        if (format==null){
            format = "yyyy-MM-dd HH:mm:ss";
        }

        final SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        final String utcTime = sdf.format(new Date());

        return utcTime;
    }

    public static String formatDate(String date, String format){
        if (date==null){
            date = getCurrentDate(null);
        }

        if (format==null){
            format = "dd-MM-yyyy";
        }

        final SimpleDateFormat sdf = new SimpleDateFormat(format);
        final String formattedDate = sdf.format(date);

        return formattedDate;

    }

}
Run Code Online (Sandbox Code Playgroud)

这是我从数据库中检索的值的用法:

last_event_placeholder.append(SupportDate.formatDate(last_event,null));
Run Code Online (Sandbox Code Playgroud)

last_event是从SQLlite检索的字符串:2015-06-29 10:41:12

Log中的错误是

java.lang.IllegalArgumentException: Bad class: class java.lang.String
Run Code Online (Sandbox Code Playgroud)

在一排final String formattedDate = sdf.format(date);方法formatDate

谢谢您的帮助

Gab*_*ova 7

DateFormat.format期望数字或日期,但您传递的是字符串.在传递日期字符串之前,您应该将其解析为日期,例如:

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
Date inputDate = inputFormat.parse(date);
Run Code Online (Sandbox Code Playgroud)

然后将此传递inputDate给您的SimpleDateFormat,如下所示:

final String formattedDate = sdf.format(inputDate);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助你:)

PS在这里你可以找到更多的答案引起:java.lang.IllegalArgumentException:坏类:类java.lang.String