[英]Date datatype in parse
我正在尝试将日期数据类型发送到Parse.com数据库。 我既无法发送数据,也无法收到任何应用崩溃消息,不确定发生了什么。
这是代码。
buttonPlacebet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseUser currentUser = ParseUser.getCurrentUser();
/** if (currentUser != null)
{
}
else
{
// show the signup or login screen
} **/
final String Betname = etBetName.getText().toString().trim();
final String BetDescription = etDescription.getText().toString().trim();
final int Betvalue = seekBarValue.getProgress();
final String Cat1 = cat1.getSelectedItem().toString();
final String Cat2 = cat2.getSelectedItem().toString();
String endDate = textEndDate.getText().toString();
// = "03/26/2012 11:49:00 AM";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(endDate);
actualendDate = convertedDate;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d(TAG, "onCreate() Restoring previous state");
ParseObject bets = new ParseObject("Bets");
bets.put("BetName", Betname);
bets.put("BetDescription", BetDescription);
bets.put("BetValue",Betvalue);
if(cbPvtbet.isChecked())
{
bets.put("PrivateBet","True");
}
else
{
bets.put("PrivateBet","False");
}
if(cbReal.isChecked())
{
bets.put("RealBet","True");
}
else
{
bets.put("RealBet","False");
}
bets.put("Cat1",Cat1);
bets.put("Cat2",Cat2);
endDate = actualendDate.toString();
bets.put("EndDate",actualendDate);
bets.saveInBackground();
}
});
}
我猜想我在日期数据类型上做错了什么,而不能正确地转换/解析。 ks
添加Log cat(当我按下按钮时是正确的),但是坦率地说,logcat中实际上没有任何显示。
05-30 21:49:25.652: E/AndroidRuntime(27738): FATAL EXCEPTION: main
05-30 21:49:25.652: E/AndroidRuntime(27738): Process: com.techiequickie.bharath.betonanything, PID: 27738
05-30 21:49:25.652: E/AndroidRuntime(27738): java.lang.NullPointerException
05-30 21:49:25.652: E/AndroidRuntime(27738): at com.techiequickie.bharath.betonanything.NewBet$1.onClick(NewBet.java:136)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.view.View.performClick(View.java:4480)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.view.View$PerformClick.run(View.java:18686)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.os.Handler.handleCallback(Handler.java:733)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.os.Handler.dispatchMessage(Handler.java:95)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.os.Looper.loop(Looper.java:157)
05-30 21:49:25.652: E/AndroidRuntime(27738): at android.app.ActivityThread.main(ActivityThread.java:5872)
05-30 21:49:25.652: E/AndroidRuntime(27738): at java.lang.reflect.Method.invokeNative(Native Method)
05-30 21:49:25.652: E/AndroidRuntime(27738): at java.lang.reflect.Method.invoke(Method.java:515)
05-30 21:49:25.652: E/AndroidRuntime(27738): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
05-30 21:49:25.652: E/AndroidRuntime(27738): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
05-30 21:49:25.652: E/AndroidRuntime(27738): at dalvik.system.NativeStart.main(Native Method)
如您的日志所示, NullPointerException请尝试查看所有变量,尤其是在actualendDate
上,因为您尝试使用从字符串输入中解析的日期来初始化它。 这是所有发生错误的地方。
查看您的示例日期输入: "03/26/2012 11:49:00 AM"
,并将其与您为SimpleDateFormat提供的模式: "yyyy-MM-dd"
。 他们是完全不同的。 这就是为什么ParseException升高且您的actualendDate
未初始化并引用Null的原因
因此,解决方案是查看SimpleDateFormat文档并进行更改
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
至
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.