我有一个字符串,它返回的日期和时间为2012-11-08 12:45:30。我需要在单独的字符串中获取日期和时间,然后日期必须以电话的日期和时间设置中的格式显示。
这是我到目前为止尝试过的代码:
db的日期值为2012-11-08
我将手机设置中的日期格式设为
String datefrmt = Settings.System.getString(
context.getContentResolver(), Settings.System.DATE_FORMAT);
将此格式应用于从db获取的日期的代码是:
SimpleDateFormat sdf = new SimpleDateFormat(datefrmt);
java.util.Date date_1 = sdf.parse("2012-11-08");
String s = sdf.format(date_1);
我正在适当地获得月份和日期,但是它会随机返回一些东西而不是正确的值。任何人都可以指导我哪里出错了。感谢
答案 0 :(得分:0)
您可以将simpleDateFormat用作:
SimpleDateFormat simpDate = new SimpleDateFormat(datefrmt,
Locale.ENGLISH);
String s = simpDate.format(new Date());
供参考,您可以参考开发者网站:
答案 1 :(得分:0)
由于您的数据库日期在yyyy-MM-dd
,请不要使用动态格式来获取日期,否则会崩溃(抛出解析异常),而是使用静态格式在下面得到日期。您可以使用动态格式转换字符串,如下所示:
//use static format to convert into date from static formatted data in db
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date_1 = sdf1.parse("2012-11-08");//got the date
//use the dynamic format to convert into string
SimpleDateFormat sdf2 = new SimpleDateFormat(datefrmt);
String s = sdf2.format(date_1);
答案 2 :(得分:0)
如果您有2012-11-08 12:45:30
字符串,并且想要将其解析为Date
对象并将其格式更改为其他格式(例如系统格式或2012-11-08
格式):
try {
String yourString="2012-11-08 12:45:30";
//first we parse input date string and create Date object
String inputDateString ="yyyy-dd-MM hh:mm:ss";
SimpleDateFormat inputDateFormat = new SimpleDateFormat(inputDateString);
java.util.Date date = inputDateFormat.parse(yourString);
//log
Log.e(getClass().getName(), inputDateFormat.format(date));
//create system date format
String dateformt = Settings.System.getString( this.getContentResolver(), Settings.System.DATE_FORMAT);
//if its for some reason==null let it be "yyyy-dd-MM"
if(dateformt==null){
dateformt="yyyy-dd-MM";
}
SimpleDateFormat systemDateFormat = new SimpleDateFormat(dateformt);
String outputString = systemDateFormat.format(date);
//log
Log.e(getClass().getName(), outputString);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 3 :(得分:0)
由于最终的String格式= Settings.System.getString(getActivity()。getContentResolver(),Settings.System.DATE_FORMAT); //可能为NULL
因此我将我的功能定制为以下用于一般用途
@SuppressLint("SimpleDateFormat")
public String getCurrentShortDateFormat() {
final String[] SFs = new String [] {
"MM/dd/yyyy",
"dd/MM/yyyy",
"yyyy/MM/dd"
};
final Date date = new Date(24638400000L);//24638400000=Oct/13/1970; 0==Jan/1/1970
java.text.DateFormat shortDateFormat = android.text.format.DateFormat.getDateFormat(getActivity().getApplicationContext());
String current = shortDateFormat.format(date);
SimpleDateFormat which = new SimpleDateFormat();
for (int i = 0; i < SFs.length; i++) {
which.applyPattern(SFs[i]);
if (which.format(date).compareTo(current)==0)
return SFs[i];
}
return null;
}
@Override
public void onResume() {
super.onResume();
Log.d(LOG_TAG, "----- onResume.CurrentShortDateFormat-----" + getCurrentShortDateFormat());
}