如何转换Thu Dec 17 15:37:43 GMT + 05:30 2015年字符串到日期在android中

时间:2015-12-17 11:09:28

标签: android

SimpleDateFormat format =new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
format.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
try {
    long diff2=format.parse(accidentReports.getAccidentDate());
}

得到这个输出:: Thu Dec 17 15:37:43 GMT + 05:30 5

5 个答案:

答案 0 :(得分:3)

如果您需要日期对象表单字符串使用:

    Date date=null;
    SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
    String temp = "Thu Dec 17 15:37:43 GMT+05:30 2015";
    try {
        date = formatter.parse(temp);
        Log.e("formated date ", date + "");
    } catch (ParseException e) {
        e.printStackTrace();
    }

你的OutPut是
Thu Dec 17 15:37:43 GMT+05:30 2015: 在日期对象

再次将其转换为字符串:

    String formateDate = new SimpleDateFormat("MM-dd-yyyy").format(date);
    Log.v("output date ",formateDate);

现在你的输出是:

12-17-2015

答案 1 :(得分:2)

在 Kotlin 中,

   private fun convertToCustomFormat(dateStr: String?): String {
        val utc = TimeZone.getTimeZone("UTC")
        val sourceFormat = SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy")
        val destFormat = SimpleDateFormat("dd-MMM-YYYY HH:mm aa")
        sourceFormat.timeZone = utc
        val convertedDate = sourceFormat.parse(dateStr)
        return destFormat.format(convertedDate)
    }

输入日期:

Sat Dec 19 12:50:57 GMT+05:30 2020

输出日期格式:

19-Dec-2020 12:50 PM

说明:

格式说明

  • EEE:日(周一)
  • MMM:月份(十二月)
  • MM:计算天数 (324)
  • mm : 月 (12)
  • dd : 日期 (3)
  • HH:小时 (12)
  • mm:分钟 (50)
  • ss : 秒 (34)
  • yyyy: Year (2020) //yyyy 和 YYYY 都是一样的
  • YYYY:年份(2020 年)
  • zzz : GMT+05:30
  • aa:(上午/下午)

答案 2 :(得分:2)

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API*

使用现代日期时间 API:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "Thu Dec 17 15:37:43 GMT+05:30 2015";
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("E MMM d H:m:s O u", Locale.ENGLISH);
        OffsetDateTime odt = OffsetDateTime.parse(strDateTime, dtfInput);

        // Default string i.e. OffsetDateTime#toString
        System.out.println(odt);

        // A custom string
        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssO", Locale.ENGLISH);
        String formatted = odt.format(dtfOutput);
        System.out.println(formatted);
    }
}

输出:

2015-12-17T15:37:43+05:30
2015-12-17T15:37:43GMT+5:30

Trail: Date Time 了解有关现代日期时间 API 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project

答案 3 :(得分:0)

请检查我以前用过的解决方案:

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
    try {
        String temp = "Thu Dec 17 15:37:43 GMT+05:30 2015";
        Date expiry = formatter.parse(temp);
    } catch (Exception e) {
        e.printStackTrace();
    }

答案 4 :(得分:0)

很抱歉,这个答案可能来晚了,但可能会在不久的将来对任何人有所帮助。 只要在传递日期(2015年12月17日星期四15:37:43 GMT + 05:30)时调用此简单方法,就会得到如下结果:2015-12-17

 private String getFormattedDate(Date timeZone){

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String formattedDate = df.format(timeZone);
    return formattedDate;

}

请记住,这是日期格式的值,而不是字符串值。

如何致电:

 getFormattedDate(date);