首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中将unix时间戳转换为字符串,但需要满足特定的要求

问在PHP中将unix时间戳转换为字符串,但需要满足特定的要求
EN

Stack Overflow用户
提问于 2013-06-20 13:46:30
回答 2查看 75关注 0票数 0

我正在尝试使用UNIX时间戳并使用PHP将其转换为字符串。考虑到PHP的内置函数,这很容易,但是我有一组特定的需求,这给我带来了一些困惑。

其逻辑如下:

  • 如果时间戳是今天-返回today
  • 如果昨天发生了时间戳-返回yesterday
  • 如果时间戳早于昨天,但本周仍返回day name (星期四、星期二等)
  • 如果时间戳发生在上周-返回last week
  • 如果时间戳早于上周-返回Month and Year (格式为2013年6月、2011年1月等)

这从一开始就显得很简单,但出于某种原因,我的大脑在这件事上感到困惑。

请注意:我不想要一个基于纯算术的解决方案,因为现代的日历系统是相当复杂的,为了精确起见,我想使用内置的时间函数来解释这一点。strtotime()、date()等。

提前感谢

编辑:到目前为止我使用的逻辑的初始部分如下所示。当然,只有在时间戳是今天的情况下,才会返回today。我需要将此扩展到考虑到其他要求。也许使用strtotime

代码语言:javascript
复制
public function getTimeChange($timestamp)
{
            $today = date('Ymd');
            $date = date(Ymd', $timestamp);


            if($date == $today){
                return 'today';
            }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 13:57:53

就像这样:

代码语言:javascript
复制
$date = date_create("@{$timestamp}");

// date_create() == new DateTime()
if($date < date_create('last week')){
  return $date->format('M Y');

}elseif($date < date_create('this week')){
  return 'Last week';

}elseif($date < date_create('yesterday')){
  return $date->format('l');

}elseif($date < date_create('today')){
  return 'Yesterday';

}else{
  return 'Today or future date';
}

(可以比较DateTime对象)

但是你不应该再为日期使用时间戳了,因为它们的范围有限。选择标准日期格式并将其存储为字符串.

票数 1
EN

Stack Overflow用户

发布于 2013-06-20 13:54:20

..。为了准确起见,我想使用内置的时间函数..。

至少“上周是否”这个问题取决于如此多的设置(一周中的第一天、ISO日期是否、DST是否.)为了准确起见,最好不要依赖PHP中内置的日历函数。

我不知道到底是谁在PHP中将时区名称设置为"Amsterdam/Berlin“,而CET等则是可用的。处理这件事其实是一件好事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17215313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档