在android中将字符串转换为日期格式
Posted
技术标签:
【中文标题】在android中将字符串转换为日期格式【英文标题】:Convert string to date format in android 【发布时间】:2012-02-11 07:52:06 【问题描述】:我正在尝试将字符串转换为日期格式。我尝试了很多方法来做到这一点。但没有成功。我的字符串是“2012 年 1 月 17 日”。我想将其转换为“2011-10-17”。 有人可以告诉我这样做的方法吗?如果您有任何通过示例,那将是一个真正的帮助!
【问题讨论】:
不是一个真正的 android 问题 【参考方案1】:try
String strDate = "Jan 17, 2012";
//current date format
SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd, yyyy");
Date objDate = dateFormat.parse(strDate);
//Expected date format
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
String finalDate = dateFormat2.format(objDate);
Log.d("Date Format:", "Final Date:"+finalDate)
catch (Exception e)
e.printStackTrace();
【讨论】:
【参考方案2】: 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
更多信息请查看here
【讨论】:
【参考方案3】:我建议使用Joda Time,它是 Java 中用于日期/日期时间操作的最佳和最简单的库,而且它是 ThreadSafe(与 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
它还提供了大量有用的日期操作方法(添加日期、时差等)。它为大多数类提供了接口,便于测试和依赖注入。
【讨论】:
【参考方案4】:为什么要将字符串转换为字符串尝试将当前时间以毫秒为单位转换为格式化字符串, 此方法会将您的 milisconds 转换为数据格式。
public static String getTime(long milliseconds)
return DateFormat.format("MMM dd, yyyy", milliseconds).toString();
您也可以尝试DATE FORMATE 课程以获得更好的理解。
【讨论】:
【参考方案5】: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 ;
【讨论】:
【参考方案6】: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;
【讨论】:
使用这种方法对我来说效果很好,我也可以以毫秒为单位获取日期。【参考方案7】:试试这个简单的方法:
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 ""
【讨论】:
以上是关于在android中将字符串转换为日期格式的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将字符串日期转换为日期时间格式? [复制]