从数据JSON URL转换时间戳

时间:2017-07-12 07:29:04

标签: android json

我是android studio的新手,我正在努力让我的简单应用程序使用Volley从URL获取JSON数据,一切都很好,但我有时间格式的问题URL中的时间戳我希望他在当地时间显示。

我的代码

package imo.meteoiraq;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;

    import com.android.volley.Request;
    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.JsonObjectRequest;
    import com.android.volley.toolbox.Volley;

    import org.json.JSONException;
    import org.json.JSONObject;

    import java.security.Timestamp;

    public class MainActivity extends AppCompatActivity {
    RequestQueue rq;
    TextView timeDesc,tempDesc,windspeedDesc,windguestDesc,humdityDesc;
        int ages;
        int temp;
        int windspeed;
        int windguest;
        int humdity;
        String timeupdate;

        String url="/stationlookup?station=I1410&units=metric&v=2.0&format=json";
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            rq= Volley.newRequestQueue(this);

            timeDesc= (TextView) findViewById(R.id.timeupdateDesc);
            tempDesc= (TextView) findViewById(R.id.tempid);
            windspeedDesc= (TextView) findViewById(R.id.windid);
            windguestDesc= (TextView) findViewById(R.id.windgustid);
            humdityDesc= (TextView) findViewById(R.id.humdid);

            sendjsonrequest();
        }
    public void  sendjsonrequest(){
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONObject stationsJO = response.getJSONObject("stations");
                    JSONObject I1410JO = stationsJO.getJSONObject("I1410");
                     temp = I1410JO.getInt("temperature");
                     windspeed = I1410JO.getInt("wind_speed");
                     windguest = I1410JO.getInt("wind_gust_speed");
                     humdity = I1410JO.getInt("humidity");
                     timeupdate = I1410JO.getString(Timestamp,"updated");

                     timeDesc.setText(timeupdate);
                     tempDesc.setText(Integer.toString(temp));
                     windspeedDesc.setText(Integer.toString(windspeed));
                     windguestDesc.setText(Integer.toString(windguest));
                     humdityDesc.setText(Integer.toString(humdity));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        rq.add(jsonObjectRequest);
    }


    }

json

{
  "stations": {
    "I1410": {
      "updated": 1499842858,
      "ageh": 0,
      "agem": 1,
      "ages": 6,
      "type": "PWS",
      "wind_dir_degrees": 270,
      "wind_speed": 7.2,
      "wind_gust_speed": 9.7,
      "humidity": 12,
      "temperature": 38.9,
      "precip_rate": null,
      "precip_today": 0,
      "pressure": 1000.56,
      "dewpoint": null,
      "windchill": null
    }
  }
}

2 个答案:

答案 0 :(得分:3)

将时间戳转换为日期格式

Checkout Imports

//Imports are as below
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

//convert timestamp (seconds) to milliseconds
    String timeupdate = "1499842858";
    long timestamp = Long.parseLong(timeupdate) * 1000L;
    Toast.makeText(getApplicationContext(),"Date:"+getDate(timestamp),Toast.LENGTH_SHORT).show();
   
    timeDesc.setText(getDate(timestamp));
        
        
    private String getDate(long timeStamp){
        try{
            DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
            Date netDate = (new Date(timeStamp));
            return sdf.format(netDate);
        }
        catch(Exception ex){
            return "xx";
        }
    }

我查了代码并且工作正常

答案 1 :(得分:1)

您可以使用此代码:

  long millisecond = I1410JO.getLong("updated")*1000L;
    timeupdate = DateFormat.format("MM/dd/yyyy", new Date(millisecond)).toString();
    timeDesc.setText(timeupdate);