您好,我有一个关于在 android 中将字符串转换为日期的最佳方法的问题。
fechauso = (EditText)findViewById(R.id.txt_fechadeuso);
String fechausoo = fechauso.getText().toString();
我想将它转换为日期,因为就像我将它保存在 mysql 数据库中的 Date 类型字段中一样,它会像这样保存它:
0000-00-00
我正在尝试通过以下方式解决它:
String newfecha = fechauso.getText().toString();
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date fecha = sdf.parse(newfecha);
} catch (ParseException e){
e.printStackTrace();
}
nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("fecha_prestamo",newfecha.trim()));
但它给了我以下错误:
Incopatible types:
Required: java.sql.Date;
Found: java.util.Date
金额如下:
import java.sql.Date;
但即便如此它继续标记错误,如果我问一些非常基本的问题,我很抱歉,但严重的是我迷路了......
这将是一个使用类将 a 转换为 的
String
示例Date
:import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.text.DateFormat; import java.util.Locale;
您必须考虑到作为输入,您必须有一个
String
包含可以转换为格式的文本Date
。另一种方法很简单,不使用Locale:
更新: 在我看来,这个问题“很短”,您需要的不仅仅是转换:“Android 中的字符串到日期”,您需要的是,根据在 EditText 中输入的日期文本,将格式更改为其他。您要做的第一件事是定义应该在 EditText 中输入的格式(您可以添加一个验证器以确保用户不会犯错误)并定义您想要获得的格式。
在您的情况下,您需要转换
2016-6-8
为2016-06-08
我们可以使用这种方法来做到这一点,您可以使用它来定义任何输入和输出格式:如果我们调用上面的方法:
我们可以得到结果
2016-06-08
使用相同的方法,您可以更改输出格式:
要得到
08/06/2016 12:00:00.000
甚至改变输入数据
得到
18/04/2012 12:00:00.000
正如我所看到的情况,您正在正确地从字符串到日期进行解析。我看到的错误是您需要将 sql.Date 保存在数据库中,SimpleDateFormat 返回一个 util.Date,简单的解决方案是将 util.Date 解析为 sql.Date,这就像 .
甚至更好
已经有了 sql.Date 中的日期,您可以将其保存在数据库中。
我的代码的附件捕获和相同的位置: