【发布时间】:2018-07-26 04:57:01
【问题描述】:
我有一个从 REST 服务器获取数据的方法。该方法以“2017-08-14T17:45:16.24Z”的格式返回日期。我还写了一个方法,以“dd/MM/yyyy”的顺序格式化日期。这很有效,但是当我尝试从服务器格式化日期并将其设置为 Edittext 时,它不起作用。这表明我在服务器响应中格式化日期的方法不起作用。我格式化日期的方法如下:
private String formatDate(String dateString) {
try {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS" );
Date d = sd.parse(dateString);
sd = new SimpleDateFormat("dd/MM/yyyy");
return sd.format(d);
} catch (ParseException e) {
}
return "";
}
下面的这个方法从服务器获取日期并格式化日期并将日期设置为编辑文本。
public void getProfile() {
Retrofit retrofit = RetrofitClient.getClient(authUser.getToken());
APIService mAPIService = retrofit.create(APIService.class);
mAPIService.getProfile("Bearer " + authUser.getToken()).enqueue(new Callback<Profile>() {
@Override
public void onResponse(Response<Profile> response, Retrofit retrofit) {
if(response.isSuccess()) {
try {
String loginSuccess = response.body().getSuccess();
if (loginSuccess.equals("true")) {
id_name.setText(response.body().getData().getName());
id_email.setText(response.body().getData().getEmail());
phone_input_layout.setText(response.body().getData().getPhoneNumber());
id_gender.setText(response.body().getData().getGender());
String dateOfBirth = response.body().getData().getDateOfBirth();
id_date_of_birth.setText(formatDate(dateOfBirth));
//updateLabel(dateOfBirth);
id_residential_address.setText(response.body().getData().getResidentialAddress());
if (response.body().getData().getEmploymentStatus().equals("Student")) {
id_nss_number.setVisibility(View.VISIBLE);
maximum_layout.setVisibility(View.INVISIBLE);
extended_layout.setVisibility(View.INVISIBLE);
} else if (response.body().getData().getEmploymentStatus().equals("Employed")) {
maximum_layout.setVisibility(View.VISIBLE);
extended_layout.setVisibility(View.INVISIBLE);
id_nss_number.setVisibility(View.INVISIBLE);
id_type.setText(response.body().getData().getIdType());
id_number.setText(response.body().getData().getIdNumber());
id_expiry_date.setText(response.body().getData().getIdExpiryDate());
}
} else {
String message = response.body().getMessage();
Log.e("getProfileError", message);
Toast.makeText(UserProfileActivity.this, message, Toast.LENGTH_LONG).show();
}
}catch (Exception e){
Toast.makeText(getApplicationContext(), "Some fields are empty", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
@Override
public void onFailure(Throwable throwable) {
Log.e("getProfileError", throwable.getMessage());
Toast.makeText(UserProfileActivity.this, "Unable to Login, Please Try Again", Toast.LENGTH_LONG).show();
}
});
}
这是我从日期格式中得到的例外
I/dateError:: Unparseable date: "1988-11-09T00:00:00Z"
【问题讨论】:
-
catch (ParseException e) { } 隐藏异常绝不是一个好主意,尤其是如果出现问题,并且您不知道是什么或为什么。另外,显示您的实际代码:您发布的代码永远不会编译,因为您有一个 dateOfBirth 的双重声明
-
@Stultuske 我更新了我的问题
-
你得到了什么异常?
-
我也不例外,但是编辑文本没有显示任何数据@ZaidMirza
-
@OleV.V.这是我从日期格式 I/dateError:: Unparseable date: "1988-11-09T00:00:00Z" (at offset 19) 中得到的异常
标签: java android datetime simpledateformat