日期格式以匹配电话设置中的日期格式

时间:2012-11-08 05:32:43

标签: android date simpledateformat

我有一个字符串,它返回的日期和时间为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);

我正在适当地获得月份和日期,但是它会随机返回一些东西而不是正确的值。任何人都可以指导我哪里出错了。感谢

4 个答案:

答案 0 :(得分:0)

您可以将simpleDateFormat用作:

 SimpleDateFormat simpDate = new SimpleDateFormat(datefrmt,
                    Locale.ENGLISH);
  String s = simpDate.format(new Date());

供参考,您可以参考开发者网站:

for more information refer this link

答案 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());
}