我根据某些条件从不同的列中获取数据库中的export function secureHttpFactory(backend: XHRBackend, defaultOptions: RequestOptions, securityService: SecurityService, cookieService: CookieService) {
return new SecureHttp(backend, defaultOptions, securityService, cookieService);
}
@NgModule({
imports: [
HttpModule,
CookieModule,
StorageModule,
],
declarations: [
...DIRECTIVES,
...COMPONENTS,
],
exports: [
...DIRECTIVES,
]
})
export class SecurityModule {
// Only create on instance of these
static forRoot(): ModuleWithProviders {
return {
ngModule: SecurityModule,
providers: [
SecurityService,
{
provide: SecureHttp,
useFactory: secureHttpFactory,
deps: [XHRBackend, RequestOptions, SecurityService, CookieService]
}
]
};
}
}
。
PHP中的脚本:
datetime
数据库以这种格式存储if($obj->acct_status == 2)
$dt = date('d M, Y h:i:s A', strtotime($obj->approve_datetime));
if($obj->acct_status == 4)
$dt = date('d M, Y h:i:s A', strtotime($obj->suspend_datetime));
:
datetime
输出:
2016-11-11 14:26:03
这个问题的原因是什么?
答案 0 :(得分:4)
我坚信,当有可用格式时,应避免使用strtotime()
。
$from_format = 'Y-m-d H:i:s';
$to_format = 'd M, Y h:i:s A';
$date = '2016-11-11 14:26:03';
echo DateTime::createFromFormat($from_format, $date)->format($to_format);
输出:
11 Nov, 2016 02:26:03 PM
为什么你的代码失败我不能肯定地说,在这里工作很好但你可以诊断一点。我假设你的情况是因为strtotime()
转换失败,返回-62169984000
实际上是0000-00-00 00:00:00
但由于第二,分钟,日和月不允许是0
,计算结果导致0000-00-00 00:00:00
减去1天和1个月等等30 Nov -0001 12:00:00
,因此您的$obj->suspend_datetime
似乎不包含正确的数据。
我已经编写了两个小功能来分享,这将使整个考验更容易处理:
function strtodatetime($date, $format = 'Y-m-d H:i:s'){
return ($d = DateTime::createFromFormat($format, $date)) && $d->format($format) == $date ? $d : false;
}
function strtounixtime($date, $format = 'Y-m-d H:i:s'){
return ($d = DateTime::createFromFormat($format, $date)) && $d->format($format) == $date ? $d->getTimestamp() : 0;
}
echo ($dt = strtodatetime($date)) ? $dt->format($to_format) : 'invalid format';
echo date('d M, Y h:i:s A', strtounixtime($obj->approve_datetime));
在您的方案中,使用strtounixtime()
(更好的strtotime()
)如果失败,它将转换回unix时代。