Java 在android中将字符串转换为日期格式

Java 在android中将字符串转换为日期格式,java,android,datetime,datetime-format,Java,Android,Datetime,Datetime Format,我正在尝试将字符串转换为日期格式。我尝试了很多方法,但没有成功。我的字符串是“2012年1月17日”。我想把它转换成“2011-10-17”。 有人能告诉我怎么做吗?如果你有任何工作通过例子,这将是一个真正的帮助 我建议使用,它是Java中用于日期/日期时间操作的最好、最简单的库,并且是线程安全的(与Java中的默认格式类相反) 您可以这样使用它: // Define formatters: DateTimeFormatter inputFormat = DateTimeFormat.forPa

我正在尝试将字符串转换为日期格式。我尝试了很多方法,但没有成功。我的字符串是“2012年1月17日”。我想把它转换成“2011-10-17”。 有人能告诉我怎么做吗?如果你有任何工作通过例子,这将是一个真正的帮助

我建议使用,它是Java中用于日期/日期时间操作的最好、最简单的库,并且是线程安全的(与Java中的默认格式类相反)

您可以这样使用它:

// Define formatters:
DateTimeFormatter inputFormat = DateTimeFormat.forPattern("MMM dd, yyyy");
DateTimeFormatter outputFormat = DateTimeFormat.forPattern("yyyy-MM-dd");

// Do your conversion:
String inputDate = "Jan 17, 2012";
DateTime date = inputFormat.parseDateTime(inputDate);
String outputDate = outputFormat.print(date);
// or:
String outputDate = date.toString(outputFormat);
// or:
String outputDate = date.toString("yyyy-MM-dd");

// Result: 2012-01-17

它还为日期操作(添加日期、时差等)提供了大量有用的方法。它为大多数类提供接口,便于测试和依赖注入。

为什么要将字符串转换为字符串尝试将当前时间(毫秒)转换为格式化字符串, 此方法将您的milisconds转换为数据格式

 public static String getTime(long milliseconds)
{

         return DateFormat.format("MMM dd, yyyy", milliseconds).toString();
}
为了更好地理解,你也可以尝试上课

   String format = "yyyy-MM-dd";
   SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US);
   System.err.format("%30s %s\n", format, sdf.format(new Date(0)));
   sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
   System.err.format("%30s %s\n", format, sdf.format(new Date(0)));
在PDT时区中运行时产生此输出:

                 yyyy-MM-dd 1969-12-31
                 yyyy-MM-dd 1970-01-01

有关更多信息,请查看尝试以下简单方法:

        fun getFormattedDate(strDate:String): String {
        try {
            val dateFormat = SimpleDateFormat("dd/mm/yyyy")//old format
            val dateFormat2 = SimpleDateFormat("mm/dd/yyyy")//require new formate
            val objDate = dateFormat.parse(strDate)
            return dateFormat2.format(objDate)
        } catch (e:Exception) {
            return ""
        }
    }

不是一个真正的安卓问题使用这种方法它对我的工作很好,我也可以以毫秒为单位获得日期。
You can't convert date from one format to other. while you are taking the date take you have take the date which ever format the you want. If you want the date in yyyy-mm-dd. You can get this by using following way.

            java.util.Calendar calc = java.util.Calendar.getInstance();

        int day = calc.get(java.util.Calendar.DATE);
        int month = calc.get(java.util.Calendar.MONTH)+1;
        int year = calc.get(java.util.Calendar.YEAR);

           String currentdate = year +"/"+month +"/"+day ;
public static Date getDateFromString(String date) {

    Date dt = null;

    if (date != null) {
        for (String sdf : supportedDateFormats) {
            try {
                dt = new Date(new SimpleDateFormat(sdf).parse(date).getTime());
                break;
            } catch (ParseException pe) {
                pe.printStackTrace();
            }
        }
    }
    return dt;
}
        fun getFormattedDate(strDate:String): String {
        try {
            val dateFormat = SimpleDateFormat("dd/mm/yyyy")//old format
            val dateFormat2 = SimpleDateFormat("mm/dd/yyyy")//require new formate
            val objDate = dateFormat.parse(strDate)
            return dateFormat2.format(objDate)
        } catch (e:Exception) {
            return ""
        }
    }