Почему это отличается? - PullRequest
       19

Почему это отличается?

0 голосов
/ 11 ноября 2009
echo date("w",strtotime(date("Y-m-d")));
echo date("w",strtotime(date("Y年m月d日")));

Сохраните его как utf8.Вы увидите, что второй больше первого.

Ответы [ 4 ]

2 голосов
/ 11 ноября 2009

Если под «большим» вы подразумеваете «он использует больше байтов», это потому, что UTF8 - это кодировка с переменным размером символов. Символ A будет закодирован одним байтом, а символ 年 - как минимум двумя. Смотрите здесь: http://en.wikipedia.org/wiki/Utf8

2 голосов
/ 11 ноября 2009

Маска

скорее всего потому, что strtotime не может правильно проанализировать дату в японском формате.

По моему мнению, читая документацию, можно принять дату, отформатированную с -, но это прямо не сказано.

пытается var_dump(strtotime(date("Y年m月d日")); дать false, так что, как и в документации, strtotime, похоже, не может его проанализировать.

поэтому дата применяется к false, что не дает того же результата.

1 голос
/ 11 ноября 2009

Основная проблема в том, что strtotime - это ожидаемая дата в формате США (готово здесь http://php.net/manual/en/function.strtotime.php)

для решения этой проблемы вы можете использовать функцию strftime

    echo date("w",strftime(date("Y年m月d日")));
    echo date("w",strftime(date("Y-m-d")));
0 голосов
/ 11 ноября 2009

Азиатские символы занимают 2 или более байтов, когда они представлены в UTF-8, в то время как тире занимают только один байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...