我有日期的字符串形式:
2011-03-27T09:39:01.607
我希望将其格式化为March 27, 2011
我正在使用
DateFormat[] formats = new DateFormat[] {
DateFormat.getDateInstance(), DateFormat.getDateTimeInstance(),
DateFormat.getTimeInstance(), };
String actDate= formats[0].format(uploadeddate.substring(0,9));
但它不起作用。
如何转换为March 27, 2011
?
答案 0 :(得分:13)
试试这个
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
java.util.Date date = null;
try
{
date = form.parse("2011-03-27T09:39:01.607");
}
catch (ParseException e)
{
e.printStackTrace();
}
SimpleDateFormat postFormater = new SimpleDateFormat("MMMMM dd, yyyy");
String newDateStr = postFormater.format(date);
现在newDateStr = March 27, 2011;
答案 1 :(得分:10)
可能这有任何帮助;
String convertDate(String inputDate) {
DateFormat theDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = theDateFormat.parse(inputDate);
} catch (ParseException parseException) {
// Date is invalid. Do what you want.
} catch(Exception exception) {
// Generic catch. Do what you want.
}
theDateFormat = new SimpleDateFormat("MMM dd, yyyy");
return theDateFormat.format(date);
}
答案 2 :(得分:4)
您可以这样使用android.text.format.DateFormat
:
DateFormat.getMediumDateFormat(context).format(date);
答案 3 :(得分:2)
String dateimput = "2011-03-27T09:39:01.607"
SimpleDateFormat formatrecived = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat formarwanted = new SimpleDateFormat("MMMM dd, yyyy");
Date recived = formatrecived.parse(dateimput);
Date output = formatwanted.format(recived);
注意:dateimput需要使用replace和substring格式化为yyyy-MM-dd hh:mm:ss
答案 4 :(得分:1)
要获取AM或PM和12小时日期格式,请使用hh:mm:ss a
作为字符串格式化程序,其中hh
为12小时格式,a
为AM PM格式。
hh
为12小时日期格式。SimpleDateFormat formatter = new SimpleDateFormat("mm/dd/yyyy hh:mm:ss a");
String newFormat = formatter.format(testDate);
String date = "2011/11/12 16:05:06";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd HH:MM:SS");
Date testDate = null;
try {
testDate = sdf.parse(date);
}catch(Exception ex){
ex.printStackTrace();
}
SimpleDateFormat formatter = new SimpleDateFormat("mm/dd/yyyy hh:mm:ss a");
String newFormat = formatter.format(testDate);
System.out.println(".....Date..."+newFormat);
答案 5 :(得分:0)
您要做的是为您的日期创建一种格式,以便能够按照您希望的方式解析日期。
格式化的井必须完全是您的时间戳的格式,然后我所做的是创建另一种格式,我希望日期看起来像什么,然后解析它。
查看文档,了解用于格式化的内容以及用于解析的内容。一旦我弄清楚这一点就容易了。
答案 6 :(得分:0)
使用Joda-Time库的示例代码。
DateTime dateTime = new DateTime( "2011-03-27T09:39:01.607", DateTimeZone.forID( "Asia/Kolkata" ) );
DateTimeFormatter formatter = DateTimeFormat.forStyle( "M-" );
String output = formatter.withLocale( java.util.Locale.ENGLISH ).print( dateTime );
答案 7 :(得分:0)
public static String getFormatedDate(String strDate, String sourceFormate,
String destinyFormate) {
SimpleDateFormat df;
df = new SimpleDateFormat(sourceFormate);
Date date = null;
try {
date = df.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
df = new SimpleDateFormat(destinyFormate);
return df.format(date);
}
称之为:
getFormatedDate(strDate, "yyyy-MM-dd HH:mm:ss", "mm/dd/yyyy");
答案 8 :(得分:0)
我想贡献现代的答案。
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
String uploadeddate = "2011-03-27T09:39:01.607";
LocalDateTime ldt = LocalDateTime.parse(uploadeddate);
String actDate = ldt.format(dateFormatter);
System.out.println(actDate);
当我将默认语言环境设置为英语并运行此代码段时,输出就是您要求的内容:
2011年3月27日
我利用了这样一个事实,即您的字符串为标准ISO 8601格式,并且java.time类将其解析为默认格式。通常,当将日期/时间字符串从一种格式重新格式化为另一种格式时,将使用两个格式化程序,一个用于指定将从转换的格式,而一个用于将转换为的格式。但是由于您的源格式是默认格式,所以我们在这里只能使用一个格式器。
uploadeddate.substring(0,9)
为您提供了2011-03-2
,我确定您打算在2011-03-27
处使用。String
传递给formats[0].format()
,但是它不能格式化字符串。它接受Date
或Long
,因此您需要先转换为其中一个。代码可以编译,但是会抛出java.lang.IllegalArgumentException: Cannot format given Object as a Date
。是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。