> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.8b-b-18UqY5/rev.11
 * 
 * authors: 
 *   GoToLoop
 *   

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



/**
 * FullDate Class (v1.05)
 * by GoToLoop (2014/Mar)
 *
 * Forum.Processing.org/two/discussion/3350/
 * getting-the-day-of-the-week-without-calendar
 *
 * Studio.ProcessingTogether.com/sp/pad/export/ro.9to4yV59zus7B
 */

import java.util.Date;

static final class FullDate {
  static int s, m, h;
  static int d, o, y;

  static int w;
  static char wc;
  static String wn, mn;

  static String inf;

  static final char[] weekChars = {
    'N', 'M', 'T', 'W', 'H', 'F', 'S'
  };

  static final String[] weekNames = {
    "Sunday", "Monday", "Tuesday", "Wednesday", 
    "Thursday", "Friday", "Saturday"
  };

  static final String[] monthNames = {
    "January", "February", "March", "April", 
    "May", "June", "July", "August", 
    "September", "October", "November", "December"
  };

  static final void refresh() {
    final Date present = new Date();

    s = present.getSeconds();
    m = present.getMinutes();
    h = present.getHours();

    w = present.getDay();
    d = present.getDate();
    o = present.getMonth();
    y = present.getYear() + 1900;

    wc = weekChars[w];
    wn = weekNames[w];
    mn = monthNames[o];

    inf = present.toString();
  }

  static final int dow() {
    return dow(d, o, y);
  }

  // Wikipedia.org/wiki/Zeller's_congruence
  static final int dow(int d, int o, int y) {
    if (o < 2) {
      o += 12;
      y--;
    }

    return ( d + (int) ((o + 2)*2.6) + y + (y>>2)
      + (y/100 | 0)*6 + ~~(y/400) + 6 ) % 7;
  }
}

void setup() {
  FullDate.refresh();

  println(FullDate.inf);
  println(FullDate.y + "\t" + FullDate.mn);

  println(str(FullDate.wc) + " - " + FullDate.dow()
    + "\t" + FullDate.wn);

  exit();
}