我从UTC的服务器获取日期时间,因此我需要将其转换为本地时间,并且需要以长格式存储在db中。
但是,只要有时间,我都会在"yyyy-MM-dd'T'HH:mm:ss.SSS"
中进行解析,然后将其转换为long
并将其存储在表中。但是当我尝试获取时,我总是会得到01 Jan 1970
。
这是我的代码:
这是我从服务器"tourCreationDateTime":"2020-03-04T07:12:52.215+0000"
获取的格式。
// insert tour details
Tour tour = new Tour();
if (tourId > 0) {
tour.setId(tourId);
}
tour.setStatus(Constants.TOUR_STATUS_OPEN);
tour.setTourNumber(tourResponseDetails.getTourId());
tour.setCreatedDateTime(DateUtils.getFormattedDate(tourResponseDetails.getTourCreationDateTime(), DateUtils.DATE_FORMAT_DB));
tourDao().insertTour(tour);
这是我的日期格式:
public static final String DATE_FORMAT_DB = "yyyy-MM-dd\'T\'HH:mm:ss.SSS";
这是getFormattedDate
方法:
public static long getFormattedDate(String dateString, String format){
if(!TextUtils.isEmpty(dateString)){
return 0L;
}
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, Locale.US);
Date date = simpleDateFormat.parse(dateString);
return date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0L;
}
我不知道怎么了。任何参考将是非常好的。
答案 0 :(得分:3)
$entities = [
0 => ['name' => 'a', 'type' => 'single'],
1 => ['name' => 'b', 'type' => 'single'],
2 => ['name' => 'c', 'type' => 'grouped'],
3 => ['name' => 'd', 'type' => 'grouped'],
4 => ['name' => 'e', 'type' => 'single'],
];
$grouped = [];
foreach($entities as $entity){
if($entity['type'] == 'grouped'){
$grouped[] = $entity['name'];
}
}
$f = 0;
foreach ($entities as $entity) {
if ($entity['type'] == 'single') {
$array[] = ['name' => $entity['name']];
}
if ($entity['type'] == 'grouped') {
$items = [0 => 'apple', 1 => 'orange', 2 => 'banana'];
for($i = 0; $i < count($items); $i++) {
foreach($grouped as $grouped_item){
if($f < count($items)*2){
$array[] = ['name' => $grouped_item];
}
$f++;
}
}
}
}
print_r($array);
0L是1970年1月1日。
这里有误-if(!TextUtils.isEmpty(dateString)){
return 0L;
}
。
您确定它应该包含!//感叹号