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

时间:2011-01-20 00:37:48

标签: php date

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

好的

$dow_numeric = date('w');

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

$dow_text = date('D');

给出了一周中文字日(太阳,周一等)的3个字母缩写

是否有使用$dow_numeric获取$dow_text的功能或简便方法?如果$dow_numeric为“0”,我该如何制作$dow_text = 'Sun'?是的,switch声明可以完成这项工作,但我正在寻找更优雅的解决方案。

7 个答案:

答案 0 :(得分:117)

有点黑客,但是:

$dow_text = date('D', strtotime("Sunday +{$dow_numeric} days"));

答案 1 :(得分:57)

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

e.g. jddayofweek(2, 2); #returns Wed

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

答案 2 :(得分:32)

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

$dowMap = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');

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

答案 3 :(得分:5)

从星期几的数字日 0到6 获取星期日到星期六

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

解决方案-1: 使用PHP的内置函数jddayofweek(),该函数从Monday开始,而date('w')从{{Sunday开始1}}:

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

//jddayofweek(0, 1); //returns 'Mon';
//jddayofweek(0, 2); //returns 'Monday';

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

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

这应该有效:

$dow_numeric = 3;

$last_sunday = strtotime('last Sunday');
$dow_text = date('D', strtotime('+'.$dow_numeric.' day', $last_sunday));

答案 6 :(得分:1)

如果需要语言环境支持,可以使用Hamishs answer的改进功能:

使用德国工作日的示例:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField==_txtOtpOne)
    {
        if(textField.text.length==1)
        {


            [_txtOtpTwo becomeFirstResponder];

        }

    }
    else if(textField==_txtOtpTwo)
    {
        if(textField.text.length==1)
        {

            [_txtOtpThree becomeFirstResponder];

        }

    }
    else if(textField==_txtOtpThree)
    {
        if(textField.text.length==1)
        {

            [_txtOtpFour becomeFirstResponder];

        }

    }
    else if(textField==_txtOtpFour)
    {
        if(textField.text.length==1)
        {


        }

    }
    return YES;
}

http://php.net/strftime

如果setlocale(LC_TIME, 'de_DE'); $dow_numeric = 3; $dow_text = strftime('%A', strtotime("Sunday +{$dow_numeric} days")); $dow_numeric开始(0 =星期一),您可以将0更改为Sunday或 添加Monday