Форматирование строк в XML-данных в Android

#android #xml-parsing #string-formatting #stringbuilder

#Android #xml-синтаксический анализ #форматирование строк #stringbuilder

Вопрос:

Я считываю данные из XML-файла. Это работает хорошо. Это значение даты. Я хочу сократить (удалить) значение времени внутри date. 2014-07-03 10:05:12 Это должно выглядеть следующим образом. 2014-07-03

Это мой код. Не могли бы вы, пожалуйста, помочь мне с этим. Заранее спасибо.

 package com.eisuru.abc;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView tvResponse;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        tvResponse = (TextView) findViewById(R.id.tvResponse); 
        new PostAsync().execute(); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


    class PostAsync extends AsyncTask<Void, Void, Void> { 
        ProgressDialog pd; XMLHelper helper;     
        @Override 
        protected void onPreExecute() { 
            pd = ProgressDialog.show(MainActivity.this, "Exchange Rates", "Loading Exchange rates values ...", true, false);
            } 

        @Override 
        protected Void doInBackground(Void... arg0) { 
            helper = new XMLHelper(); helper.get(); 
            return null; 
            }   

        @Override 
        protected void onPostExecute(Void result) 
        { 
            StringBuilder builder = new StringBuilder(); 
            for(Exrate_values post : helper.exrates) {

                if(post.getTo_Currency().equalsIgnoreCase("SLR"))
                {


                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                //builder.delete(13, 15);

                if(post.getFrom_currency().equalsIgnoreCase("LKR")amp;amp; post.getTo_Currency().equalsIgnoreCase("SLR"))
                {
                    builder.delete(0, builder.length());
                }
                }

                if(post.getFrom_currency().equalsIgnoreCase("EUR")amp;amp; post.getTo_Currency().equalsIgnoreCase("GBP"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

                if(post.getFrom_currency().equalsIgnoreCase("AUD")amp;amp; post.getTo_Currency().equalsIgnoreCase("USD"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

                if(post.getFrom_currency().equalsIgnoreCase("EUR")amp;amp; post.getTo_Currency().equalsIgnoreCase("USD"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

                if(post.getFrom_currency().equalsIgnoreCase("EUR")amp;amp; post.getTo_Currency().equalsIgnoreCase("AUD"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

                if(post.getFrom_currency().equalsIgnoreCase("GBP")amp;amp; post.getTo_Currency().equalsIgnoreCase("USD"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

                if(post.getFrom_currency().equalsIgnoreCase("GBP")amp;amp; post.getTo_Currency().equalsIgnoreCase("AUD"))
                {

                builder.append("nt "   post.getDate()); 
                builder.append("t t t "   post.getFrom_currency()); 
                builder.append("t t t "   post.getTo_Currency()); 
                builder.append("t t t "   post.getExrt_buy()); 
                builder.append("t t t t t t"   post.getExrt_sell()); 

                builder.append("n"); 
                }

        } 
                tvResponse.setText(builder.toString()); 
                pd.dismiss(); 
                }   
        } 

}
  

Ответ №1:

СПОСОБ 1: Если это просто строка, вам может сойти с рук синтаксический анализ подстроки. Для этого можно использовать множество методов, таких как:

 String datetime = "2014-07-03 10:05:12";
String[] date = datetime.split(" ");
  

Тогда date[0] будет равно "2014-07-03" .

СПОСОБ 2: Поскольку ваша дата всегда будет одинаковой длины, вы можете использовать substring .

 String date = datetime.substring(0,10);
  

СПОСОБ 3: Вы также можете анализировать даты с помощью SimpleDateFormat .

 SimpleDateFormat fromDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat toDateFormat = new SimpleDateFormat("yyyy-MM-dd");
try { 
    String date = toDateFormat.format(fromDateFormat.parse(datetime));
} catch (ParseException e1) {
    e1.printStackTrace();
}
  

Ответ №2:

Вы должны создать SimpleDateFormat для анализа даты в требуемом формате.

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        formatter.format(formatter.parse(post.getDate()));
  

Это позволит проанализировать дату с 2014-07-03 10:05:12 по 2014-07-03.

Ответ №3:

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
String dateString = formatter.format(new Date(post.getDate()));