解析日期始终返回1970年1月1日

时间:2020-03-05 15:13:58

标签: android datetime simpledateformat utc

我从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;
}

我不知道怎么了。任何参考将是非常好的。

1 个答案:

答案 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; }
您确定它应该包含!//感叹号