from UNIX time by 鳴神裁4.1号(test)

{
  # calculate hour, minute, and seconds, and days since 1970/1/1
  s = $1 % 60;  t = int($1/60);
  m =  t % 60;  t = int( t/60);
  h =  t % 24;
  days_from_epoch = int( t/24);

  # calculate year
  max_calced_year = 1970;              # To remember every days on 01/01 from
  days_on_Jan1st_from_epoch[1970] = 0; # the Epoch which was calculated once
  Y = int(days_from_epoch/365.2425)+1970+1;
  if (Y > max_calced_year) {
     i = days_on_Jan1st_from_epoch[max_calced_year];
     for (j=max_calced_year; j<Y; j++) {
       i += (j%4!=0)?365:(j%100!=0)?366:(j%400!=0)?365:366;
       days_on_Jan1st_from_epoch[j+1] = i;
     }
     max_calced_year = Y;
  }
  for (;;Y--) {
    if (days_from_epoch >= days_on_Jan1st_from_epoch[Y]) {
      break;
    }
  }

  # calculate month and date
  split("31 0 31 30 31 30 31 31 30 31 30 31", days_of_month);  # not sure for February yet
  days_of_month[2] = (Y%4!=0)?28:(Y%100!=0)?29:(Y%400!=0)?28:29;
  D = days_from_epoch - days_on_Jan1st_from_epoch[Y] + 1;
  for (M=1; ; M++) {
    if (D > days_of_month[M]) {
      D -= days_of_month[M];
    } else {
      break;
    }
  }

  # finally
  printf("%04d/%02d/%02d %02d:%02d:%02d\n",Y,M,D,h,m,s);
}

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

To protect the system from spam, please input your favorite sport (hint: I believe its name must start with 'g', case insensitive)

download

return to the top page