2017-08-26 99 views
0

这不是一个重复的问题。我正在使用php date函数来格式化日期。使用php的日期格式问题

my date value is:close_date:08/25/2017

这是PHP函数:$close_date = date('Y-m-d', strtotime($close_date));

打印的close_date,结果是:2017-08-26

我的时区是:-5:00和服务器上UTC,所以在格式化日期时间,日期转换为UTC日期?

so date只是格式化日期或转换日期为每集timezone

帮我解决这个问题。

我不想将我的日期转换为任何时区日期,我只是想更改日期的格式。

我输入的是:2017年8月25日

预期成果是:2017年8月25日

+3

的可能的复制[如何UTC时间值转换到另一个时区?(https://stackoverflow.com/questions/11883757/how-to-convert-utc-datetime-to-another-timezone) –

+0

不,这不是重复的。 –

+1

请分享您的意见和期望的输出。 –

回答

1

在情况下,你不希望使用PHP date功能他们尝试使用DateTime::createFromFormat或编写一些手动代码的东西来爆炸$close_date并以您想要的方式使用它。

第1种方法:

使用DateTime::createFromFormat。这将帮助您根据指定的格式解析时间字符串。

$close_date = DateTime::createFromFormat("m/d/Y", $close_date)->format("Y-m-d"); 

第2种方法:

使用一些人工代码:

$close_date = "08/25/2017"; 
$date_vars = preg_split("#/#", $close_date); 
print_r($date_vars); 

然后使用$date_vars在需要转换格式像下面的代码:

$close_date = $date_vars[2]."-".$date_vars[0]."-".$date_vars[1]; 

PS:您也可以使用PHP explode()函数来分解日期值。

+0

这个日期不取决于任何时区? –

+1

对! =)只是根据指定的格式解析一个时间字符串。 –

+0

如果您可能想要任何时区操作,请在末尾使用'setTimezone'。检查它在这里:[createFromFormat](http://php.net/manual/en/datetime.createfromformat.php) –

2

您可能希望使用DateTime从所需的格式创建日期对象,并将其转换为您需要的格式。

DateTime::createFromFormat("m/d/Y","08/25/2017")->format("Y-m-d"); 
+0

你确定,这个日期不依赖于任何时区? –

+0

@chiragsatapara它只是根据指定的格式解析一个时间字符串。 –

+0

你说你只需要转换日期,在时区操作的情况下,你也可以使用DateTime类 - DateTime :: setTimeZone(); –