【问题标题】:Get a Date from Database and comparing it in Java从数据库中获取日期并在 Java 中进行比较
【发布时间】:2015-12-15 00:04:54
【问题描述】:

我很难尝试从 MYSQL 服务器获取日期字符串(这是一个日期,但我将它作为字符串接收),并将其转换为我的 android 应用程序中的日期格式。我需要将其转换为 Date(或其他等价物),因为我需要比较从服务器获取的日期并检测最新的日期。

提前感谢,任何帮助将不胜感激

这是我的代码:

private void makeJsonObjectRequest() {

            String nuevoUrl = url + "?unidad=" + unidad.getText().toString();
            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
                    nuevoUrl , new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());

                    try {
                        // Parsing json object response
                        // response will be a json object
                        //Esta linea de abajo convierte el array en lista de objetos
                        medidores = response.getJSONArray("medidor");

                        //Esto sirve para convertir el srting de fecha a tipo Date
                        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        ParsePosition pos = new ParsePosition(0);



                        //Este es un array de objetos "medidor" (clase java)
                        medidor med[] = new medidor[medidores.length()];

                        for (i=0;i<medidores.length();i++) {
                            JSONObject objeto = medidores.getJSONObject(i);


                            String sunidad = objeto.getString("unidad");
                            String stpo_med = objeto.getString("tpo_med");
                            String snum_med = objeto.getString("num_med");
                            String sfec_med = objeto.getString("fec_med");
                            String sest_med = objeto.getString("est_med");


                            //Date fecha = formatter.parse(sfec_med,pos);


                            //med[i] = new medidor(sunidad,stpo_med,snum_med,fecha,sest_med);
                            /*
                            med[i].setUnidad(sunidad);
                            med[i].setTpo_med(stpo_med);
                            med[i].setNum_med(snum_med);
                            med[i].setFec_med(fecha);
                            med[i].setEst_med(sest_med);
                            */
                            /*
                            if(i>0 && mayor.before(fecha2)) {

                                //La fecha i es mayor a la fecha i-1
                                mayor = fecha2;
                            }
                                else{
                                    //mayor = med[i-1].getFec_med();
                                }*/

                            jsonResponse = "La mayor fecha es: " + sfec_med;

                            /*jsonResponse += "";
                            jsonResponse += "Unidad: " + sunidad + "\n\n";
                            jsonResponse += "Tipo medidor: " + stpo_med + "\n\n";
                            jsonResponse += "Num medidor: " + snum_med + "\n\n";
                            jsonResponse += "Fecha medicion: " + sfec_med + "\n\n";
                            jsonResponse += "Estado medido: " + sest_med + "\n\n";
                            */
                        }

                        usuario.setText(jsonResponse);

                    } catch (JSONException e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(),
                                "Error: " + e.getMessage(),
                                Toast.LENGTH_LONG).show();
                    }

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();

                }
            }) {


            };




            // Adding request to request queue

            AppController.getInstance().addToRequestQueue(jsonObjReq);
        }

【问题讨论】:

  • 请分享您用于数据访问的代码。
  • 您可以使用 JodaTime 轻松实现日期和时间功能。
  • 好像你在那里解析 JSON 日期。查看Converting ISO 8601-compliant String to java.util.Date 了解可能的解决方案。
  • 为什么你会收到一个字符串?

标签: java android mysql string date


【解决方案1】:

为什么不将日期保存为 LONG? 插入:date.getTime(); Fetch: new Date("把 long in here");

【讨论】:

  • 我试过这个。我收到一条错误消息,提示类型 java.lang.String 无法转换为 long
  • 为什么要将字符串转换为长字符串?在数据库中将日期保存为“LONG”。然后通过 date.getTime() 在数据库中插入一个 java 日期。当您从数据库中查询一个或所有长日期时,会为每个长日期创建一个新的 JAVA 日期(长)。长 -> 米利斯时间
【解决方案2】:
String sqlDateTimeString = "2015-09-24 18:56:15.089";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = format.parse(sqlDateTimeString);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多