#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()));