PHP星期几数字到星期几文本

csi*_*csi 46 php date

这可能非常简单,但我找不到PHP函数来执行此操作...

好的

$dow_numeric = date('w');
Run Code Online (Sandbox Code Playgroud)

给出星期日到星期六0-6周的数字日.

$dow_text = date('D');
Run Code Online (Sandbox Code Playgroud)

给出了一周中文本日的3个字母缩写(Sun,Mon等)

是否有功能或简单的方法$dow_numeric来获取$dow_text?如果我有'0' $dow_numeric,我该怎么做$dow_text = 'Sun'?是的,switch声明可以完成这项工作,但我正在寻找更优雅的解决方案.

Ham*_*ish 123

有点黑客,但是:

$dow_text = date('D', strtotime("Sunday +{$dow_numeric} days"));
Run Code Online (Sandbox Code Playgroud)

  • 它不是hacky,它很光滑!;-) (14认同)
  • 或者,使用`date('l')`(小写*L*)表示一整天的名字.[更多信息](http://php.net/manual/en/function.date.php#refsect1-function.date-parameters) (8认同)
  • @GDY 在这个例子中:不,他们不是。可以说,这是为了可读性。但即便如此,这也是一个品味问题。在我们公司,我们会写:strtotime('Sunday +' . $dow_numeric . ' days')。即使那些 PHP 经验较少的人也能理解这一点。 (2认同)

Chi*_*ata 60

它并不受欢迎,但实际上jddayofweekPHP中有一个功能.您可以使用第二个参数作为1来调用它以获得完整的格里高利工作日名称,或者使用2作为缩写名称.

e.g. jddayofweek(2, 2); #returns Wed
Run Code Online (Sandbox Code Playgroud)

请注意,对于此功能,数字从星期一开始.星期一= 0,星期二= 1,......

  • 这应该是最好的答案. (16认同)
  • 本周的默认开始时间是星期一.所以,如果你的星期天== 0,那么一天都会关闭.记在脑子里. (2认同)
  • 朱利安日0 =公元4713年1月1日(星期一).这就是为什么0 =星期一; 1 =星期二等.如果你想要0 - >星期日(等),你应该使用jddayofweek($ dow_numeric - 1,2); (或1,长日名称) (2认同)
  • 我建议将提供的内置常量“CAL_DOW_SHORT”和“CAL_DOW_LONG”与“jddayofweek”一起使用。常量定义比它们的值更不可能改变。 (2认同)

Thi*_*ter 33

创建一个数组以将数字DOW映射到文本DOW.

$dowMap = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
Run Code Online (Sandbox Code Playgroud)

如果您需要语言环境支持,请加载一些随机日期的dow(例如,epoch(0)将是一个好日期),然后在接下来的6天内动态构建dow map.


Rez*_*mun 6

要从星期几至0到6取得星期日至星期六

//For example, our target numeric day is 0 (Sunday):
$numericDay = 0; //assuming current date('w')==0 and date('D')=='Sun';
Run Code Online (Sandbox Code Playgroud)

解决方案1:使用PHP的内置函数 jddayofweek()从开始,Mondaydate('w')从开始Sunday

jddayofweek($numericDay-1, 1); //returns 'Sun', here decreasing by '-1' is important(!)

//jddayofweek(0, 1); //returns 'Mon';
//jddayofweek(0, 2); //returns 'Monday';
Run Code Online (Sandbox Code Playgroud)

解决方案2:使用技巧(!):

date('D', strtotime("Sunday +{$numericDay} days")); //returns 'Sun';

//date('l', strtotime("Sunday +{$numericDay} days")); //returns 'Sunday';
Run Code Online (Sandbox Code Playgroud)

  • strtotime的好主意! (2认同)

小智 5

function getDay(){
    $dowMap = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    $dow_numeric = date('w');
    return $dowMap[$dow_numeric];
}
Run Code Online (Sandbox Code Playgroud)