- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
$sec_in_year = 31536000;
$sec_in_lyear = 31622400;
$sec_in_28 = 2419200;
$sec_in_29 = 2505600;
$sec_in_30 = 2592000;
$sec_in_31 = 2678400;
$sec_in_day = 86400;
$sec_in_hour = 3600;
$sec_in_min = 60;
$year_count = 1970;
$month_count = 0;
$day_count = 1;
$hour_count = 0;
$min_count = 0;
$lyear_count = 2; // Make an array of seconds per month for ease of use.
$months = array(2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400);
$lmonths = array(2678400, 2505600, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400);
$month_list = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
while($utime >= $sec_in_year) { // Count the year since 1970.
if($lyear_count % 4 == 0) {
$utime -= $sec_in_lyear; // Compensate for leap years.
}
else {
$utime -= $sec_in_year;
}
$year_count++;
$lyear_count++;
}
while($utime >= $months[$month_count]) { // Count the months since Jan.
if($lyear_count % 4 == 0) {
$utime -= $lmonths[$month_count]; // Compensate for leap year Feb.
}
else {
$utime -= $months[$month_count];
}
$month_count++;
}
И еще куча строк кода.
Конвертим никсовый временной штамп, в читаемый для человека формат... aka date()
rO_ot 07.12.2010 22:22 # 0
Анонимус 07.12.2010 22:25 # +3
достойные ученики лердорфа)
TarasB 08.12.2010 12:26 # −1
Анонимус 08.12.2010 17:53 # −1
wmmorgun 08.12.2010 18:06 # −1
Анонимус 08.12.2010 18:13 # −1
теперь тоже самое для varchar в UTF-8, например со словом "товары для дома"
wmmorgun 08.12.2010 18:19 # −1
Анонимус 08.12.2010 18:21 # −1
wmmorgun 08.12.2010 18:22 # −1
Анонимус 08.12.2010 18:27 # −1
что мешает связаться с ней по id?
хотя в целом ладно: если там действительно char(2), да еще однобайтовая кодировка -- то это не смертельно.
Вы еще пропустили шпильку про аутерджойн.
Невероятно, но некоторые не знают про внутренние джойны. Они знают только одну конструкцию, и называют ее "лефтджойн". И юзают везде, даже где не надо
wmmorgun 08.12.2010 18:32 # −1
Естественно хранится как char(2), только вот кодировка особо значение не имеет, главное чтобы была _bin
А по поводу лефт-джоина в целом согласен, но иногда очень не хватает full outer, приходится извращаться
Анонимус 08.12.2010 18:50 # −1
если unicode четырехбайтовый -- имеет)
wmmorgun 08.12.2010 13:19 # −1
А также добавить заранее просчитанный массивчик $seconds_in_days [year][month][day], чтобы еще учитывать даты перехода на летнее время и обратно, с 70го и на ближайшие лет 10 :D на
Lure Of Chaos 08.12.2010 15:41 # −1
Oleg_quadro 08.12.2010 17:27 # −1
Нет, не надо: два перевода часов в году компенсируют друг друга.
Сначала у нас день на час короче (23 часа) (переход на летнее время), потом у нас день на час длиннее (25 часов) (переход на зимнее время).
wmmorgun 08.12.2010 17:31 # −1
Oleg_quadro 08.12.2010 17:36 # −1
wmmorgun 08.12.2010 17:43 # −1
Oleg_quadro 08.12.2010 18:00 # −1
wmmorgun 08.12.2010 18:02 # −1
Oleg_quadro 08.12.2010 23:27 # −1
bugmenot 09.12.2010 00:28 # 0
Oleg_quadro 09.12.2010 00:43 # 0
bugmenot 09.12.2010 01:07 # 0
общеобразовательный курс астрономии как бы
Oleg_quadro 09.12.2010 01:23 # 0
===
Но, грубо, UTC — это время GMT по нулевому часовому поясу без переводов часов.