- NAME
- clock - Obtain and manipulate dates and times
- SYNOPSIS
- DESCRIPTION
- clock add timeVal ?count unit...? ?-option value?
- clock clicks ?-option?
- clock format timeVal ?-option value...?
- clock microseconds
- clock milliseconds
- clock scan inputString ?-option value...?
- clock seconds
- PARAMETERS
- count
- timeVal
- unit
- OPTIONS
- -base time
- -format format
- -gmt boolean
- -locale localeName
- -timezone zoneName
- CLOCK ARITHMETIC
- HIGH RESOLUTION TIMERS
- FORMATTING TIMES
- SCANNING TIMES
- FORMAT GROUPS
- %a
- %A
- %b
- %B
- %c
- %C
- %d
- %D
- %e
- %Ec
- %EC
- %EE
- %Ex
- %EX
- %Ey
- %EY
- %g
- %G
- %h
- %H
- %I
- %j
- %J
- %k
- %l
- %m
- %M
- %N
- %Od, %Oe, %OH, %OI, %Ok, %Ol, %Om, %OM, %OS, %Ou, %Ow, %Oy
- %p
- %P
- %Q
- %r
- %R
- %s
- %S
- %t
- %T
- %u
- %U
- %V
- %w
- %W
- %x
- %X
- %y
- %Y
- %z
- %Z
- %%
- %+
- TIME ZONES
- LOCALIZATION
- FREE FORM SCAN
- time
- date
- ISO 8601 point-in-time
- relative time
- SEE ALSO
- KEYWORDS
- COPYRIGHT
clock - Obtain and manipulate dates and times
package require Tcl 8.5
clock add timeVal ?count unit...? ?-option value?
clock clicks ?-option?
clock format timeVal ?-option value...?
clock microseconds
clock milliseconds
clock scan inputString ?-option value...?
clock seconds
The clock command performs several operations that obtain and
manipulate values that represent times. The command supports several
subcommands that determine what action is carried out by the command.
- clock add timeVal ?count unit...? ?-option value?
-
Adds a (possibly negative) offset to a time that is expressed as an
integer number of seconds. See CLOCK ARITHMETIC for a full description.
- clock clicks ?-option?
-
If no -option argument is supplied, returns a high-resolution
time value as a system-dependent integer value. The unit of the value
is system-dependent but should be the highest resolution clock available
on the system such as a CPU cycle counter. See HIGH RESOLUTION TIMERS for a full description.
If the -option argument is -milliseconds, then the command
is synonymous with clock milliseconds (see below). This
usage is obsolete, and clock milliseconds is to be
considered the preferred way of obtaining a count of milliseconds.
If the -option argument is -microseconds, then the command
is synonymous with clock microseconds (see below). This
usage is obsolete, and clock microseconds is to be
considered the preferred way of obtaining a count of microseconds.
- clock format timeVal ?-option value...?
-
Formats a time that is expressed as an integer number of seconds into a format
intended for consumption by users or external programs.
See FORMATTING TIMES for a full description.
- clock microseconds
-
Returns the current time as an integer number of microseconds. See HIGH RESOLUTION TIMERS for a full description.
- clock milliseconds
-
Returns the current time as an integer number of milliseconds. See HIGH RESOLUTION TIMERS for a full description.
- clock scan inputString ?-option value...?
-
Scans a time that is expressed as a character string and produces an
integer number of seconds.
See SCANNING TIMES for a full description.
- clock seconds
-
Returns the current time as an integer number of seconds.
- count
-
An integer representing a count of some unit of time. See
CLOCK ARITHMETIC for the details.
- timeVal
-
An integer value passed to the clock command that represents an
absolute time as a number of seconds from the epoch time of
1 January 1970, 00:00 UTC. Note that the count of seconds does not
include any leap seconds; seconds are counted as if each UTC day has
exactly 86400 seconds. Tcl responds to leap seconds by speeding or
slowing its clock by a tiny fraction for some minutes until it is
back in sync with UTC; its data model does not represent minutes that
have 59 or 61 seconds.
- unit
-
One of the words, seconds, minutes, hours,
days, weeks, months, or years, or
any unique prefix of such a word. Used in conjunction with count
to identify an interval of time, for example, 3 seconds or
1 year.
- -base time
-
Specifies that any relative times present in a clock scan command
are to be given relative to time. time must be expressed as
a count of nominal seconds from the epoch time of 1 January 1970, 00:00 UTC.
- -format format
-
Specifies the desired output format for clock format or the
expected input format for clock scan. The format string consists
of any number of characters other than the per-cent sign
(“%”)
interspersed with any number of format groups, which are two-character
sequences beginning with the per-cent sign. The permissible format groups,
and their interpretation, are described under FORMAT GROUPS.
On clock format, the default format is
%a %b %d %H:%M:%S %z %Y
On clock scan, the lack of a -format option indicates that a
“free format scan”
is requested; see FREE FORM SCAN for a description of what happens.
- -gmt boolean
-
If boolean is true, specifies that a time specified to clock add,
clock format or clock scan should be processed in
UTC. If boolean is false, the processing defaults to the local time
zone. This usage is obsolete; the correct current usage is to
specify the UTC time zone with
“-timezone :UTC”
or any of the equivalent ways to specify it.
- -locale localeName
-
Specifies that locale-dependent scanning and formatting (and date arithmetic
for dates preceding the adoption of the Gregorian calendar) is to be done in
the locale identified by localeName. The locale name may be any of
the locales acceptable to the msgcat package, or it may be the special
name system, which represents the current locale of the process, or
the null string, which represents Tcl's default locale.
The effect of locale on scanning and formatting is discussed in the
descriptions of the individual format groups under FORMAT GROUPS.
The effect of locale on clock arithmetic is discussed under
CLOCK ARITHMETIC.
- -timezone zoneName
-
Specifies that clock arithmetic, formatting, and scanning are to be done
according to the rules for the time zone specified by zoneName.
The permissible values, and their interpretation, are discussed under
TIME ZONES.
On subcommands that expect a -timezone argument, the default
is to use the current time zone. The current time zone is
determined, in order of preference, by:
- [1]
-
the environment variable TCL_TZ.
- [2]
-
the environment variable TZ.
- [3]
-
on Windows systems, the time zone settings from the Control Panel.
If none of these is present, the C localtime and mktime
functions are used to attempt to convert times between local and
Greenwich. On 32-bit systems, this approach is likely to have bugs,
particularly for times that lie outside the window (approximately the
years 1902 to 2037) that can be represented in a 32-bit integer.
The clock add command performs clock arithmetic on a value
(expressed as nominal seconds from the epoch time of 1 January 1970, 00:00 UTC)
given as its first argument. The remaining arguments (other than the
possible -timezone, -locale and -gmt options)
are integers and keywords in alternation, where the keywords are chosen
from seconds, minutes, hours,
days, weeks, months, or years, or
any unique prefix of such a word.
Addition of seconds, minutes and hours is fairly straightforward;
the given time increment (times sixty for minutes, or 3600 for hours)
is simply added to the timeVal given
to the clock add command. The result is interpreted as
a nominal number of seconds from the Epoch.
Surprising results
may be obtained when crossing a point at which a leap second is
inserted or removed; the clock add command simply ignores
leap seconds and therefore assumes that times come in sequence,
23:59:58, 23:59:59, 00:00:00. (This assumption is handled by
the fact that Tcl's model of time reacts to leap seconds by speeding
or slowing the clock by a minuscule amount until Tcl's time
is back in step with the world.
The fact that adding and subtracting hours is defined in terms of
absolute time means that it will add fixed amounts of time in time zones
that observe summer time (Daylight Saving Time). For example,
the following code sets the value of x to 04:00:00 because
the clock has changed in the interval in question.
set s [clock scan {2004-10-30 05:00:00} \
-format {%Y-%m-%d %H:%M:%S} \
-timezone :America/New_York]
set a [clock add $s 24 hours -timezone :America/New_York]
set x [clock format $a \
-format {%H:%M:%S} -timezone :America/New_York]
Adding and subtracting days and weeks is accomplished by converting
the given time to a calendar day and time of day in the appropriate
time zone and locale. The requisite number of days (weeks are converted
to days by multiplying by seven) is added to the calendar day, and
the date and time are then converted back to a count of seconds from
the epoch time.
Adding and subtracting a given number of days across the point that
the time changes at the start or end of summer time (Daylight Saving Time)
results in the same local time on the day in question. For
instance, the following code sets the value of x to 05:00:00.
set s [clock scan {2004-10-30 05:00:00} \
-format {%Y-%m-%d %H:%M:%S} \
-timezone :America/New_York]
set a [clock add $s 1 day -timezone :America/New_York]
set x [clock format $a \
-format {%H:%M:%S} -timezone :America/New_York]
In cases of ambiguity, where the same local time happens twice
on the same day, the earlier time is used. In cases where the conversion
yields an impossible time (for instance, 02:30 during the Spring
Daylight Saving Time change using US rules), the time is converted
as if the clock had not changed. Thus, the following code
will set the value of x to 03:30:00.
set s [clock scan {2004-04-03 02:30:00} \
-format {%Y-%m-%d %H:%M:%S} \
-timezone :America/New_York]
set a [clock add $s 1 day -timezone :America/New_York]
set x [clock format $a \
-format {%H:%M:%S} -timezone :America/New_York]
Adding a given number of days or weeks works correctly across the conversion
between the Julian and Gregorian calendars; the omitted days are skipped.
The following code sets z to 1752-09-14.
set x [clock scan 1752-09-02 -format %Y-%m-%d -locale en_US]
set y [clock add $x 1 day -locale en_US]
set z [clock format $y -format %Y-%m-%d -locale en_US]
In the bizarre case that adding the given number of days yields a date
that does not exist because it falls within the dropped days of the
Julian-to-Gregorian conversion, the date is converted as if it was
on the Julian calendar.
Adding a number of months, or a number of years, is similar; it
converts the given time to a calendar date and time of day. It then
adds the requisite number of months or years, and reconverts the resulting
date and time of day to an absolute time.
If the resulting date is impossible because the month has too few days
(for example, when adding 1 month to 31 January), the last day of the
month is substituted. Thus, adding 1 month to 31 January will result in
28 February in a common year or 29 February in a leap year.
The rules for handling anomalies relating to summer time and to the
Gregorian calendar are the same when adding/subtracting months and
years as they are when adding/subtracting days and weeks.
If multiple count unit pairs are present on the command, they
are evaluated consecutively, from left to right.
Most of the subcommands supported by the clock command deal with
times represented as a count of seconds from the epoch time, and this is the
representation that clock seconds returns. There are three exceptions,
which are all intended for use where higher-resolution times are required.
clock milliseconds returns the count of milliseconds from the
epoch time, and clock microseconds returns the count of microseconds
from the epoch time. In addition, there is a clock clicks command
that returns a platform-dependent high-resolution timer. Unlike
clock seconds and clock milliseconds, the value
of clock clicks is not guaranteed to be tied to any fixed
epoch; it is simply intended to be the most precise interval timer
available, and is intended only for relative timing studies such as
benchmarks.
The clock format command produces times for display to a user
or writing to an external medium. The command accepts times that are
expressed in seconds from the epoch time of 1 January 1970, 00:00 UTC,
as returned by clock seconds, clock scan, clock add,
file atime or file mtime.
If a -format option is present, the following argument is
a string that specifies how the date and time are to be formatted.
The string consists
of any number of characters other than the per-cent sign
(“%”)
interspersed with any number of format groups, which are two-character
sequences beginning with the per-cent sign. The permissible format groups,
and their interpretation, are described under FORMAT GROUPS.
If a -timezone option is present, the following
argument is a string that specifies the time zone in which the date and time
are to be formatted. As an alternative to
“-timezone :UTC”,
the obsolete usage
“-gmt true”
may be used. See
TIME ZONES for the permissible variants for the time zone.
If a -locale option is present, the following argument is
a string that specifies the locale in which the time is to be formatted,
in the same format that is used for the msgcat package. Note
that the default, if -locale is not specified, is the root locale
{} rather than the current locale. The current locale may
be obtained by using -locale current.
In addition, some platforms support a system locale that
reflects the user's current choices. For instance, on Windows, the
format that the user has selected from dates and times in the Control
Panel can be obtained by using the system locale. On
platforms that do not define a user selection of date and time formats
separate from LC_TIME, -locale system is
synonymous with -locale current.
The clock scan command accepts times that are formatted as
strings and converts them to counts of seconds from the epoch time
of 1 January 1970, 00:00 UTC. It normally takes a -format
option that is followed by a string describing
the expected format of the input. (See
FREE FORM SCAN for the effect of clock scan
without such an argument.) The string consists of any number of
characters other than the per-cent sign
(“%”),
interspersed with any number of format groups, which are two-character
sequences beginning with the per-cent sign. The permissible format groups,
and their interpretation, are described under FORMAT GROUPS.
If a -timezone option is present, the following
argument is a string that specifies the time zone in which the date and time
are to be interpreted. As an alternative to -timezone :UTC,
the obsolete usage -gmt true may be used. See
TIME ZONES for the permissible variants for the time zone.
If a -locale option is present, the following argument is
a string that specifies the locale in which the time is to be interpreted,
in the same format that is used for the msgcat package. Note
that the default, if -locale is not specified, is the root locale
{} rather than the current locale. The current locale may
be obtained by using -locale current.
In addition, some platforms support a system locale that
reflects the user's current choices. For instance, on Windows, the
format that the user has selected from dates and times in the Control
Panel can be obtained by using the system locale. On
platforms that do not define a user selection of date and time formats
separate from LC_TIME, -locale system is
synonymous with -locale current.
If a -base option is present, the following argument is
a time (expressed in seconds from the epoch time) that is used as
a base time for interpreting relative times. If no
-base option is present, the base time is the current time.
Scanning of times in fixed format works by determining three things:
the date, the time of day, and the time zone. These three are then
combined into a point in time, which is returned as the number of seconds
from the epoch.
Before scanning begins, the format string is preprocessed
to replace %c, %Ec, %x, %Ex,
%X. %Ex, %r, %R, %T,
%D, %EY and %+ format groups with counterparts
that are appropriate to the current locale and contain none of the
above groups. For instance, %D will (in the en_US locale)
be replaced with %m/%d/%Y.
The date is determined according to the fields that are present in the
preprocessed format string. In order of preference:
- [1]
-
If the string contains a %s format group, representing
seconds from the epoch, that group is used to determine the date.
- [2]
-
If the string contains a %J format group, representing
the Julian Day Number, that group is used to determine the date.
- [3]
-
If the string contains a complete set of format groups specifying
century, year, month, and day of month; century, year, and day of year;
or ISO8601 fiscal year, week of year, and day of week; those groups are
combined and used to determine the date. If more than one complete
set is present, the one at the rightmost position in the string is
used.
- [4]
-
If the string lacks a century but contains a set of format
groups specifying year of century, month and day of month; year of
century and day of year; or two-digit ISO8601 fiscal year, week of year,
and day of week; those groups are
combined and used to determine the date. If more than one complete
set is present, the one at the rightmost position in the string is
used. The year is presumed to lie in the range 1938 to 2037 inclusive.
- [5]
-
If the string entirely lacks any specification for the year
(or contains the year only on the locale's alternative calendar)
and contains a set of format groups specifying month and day of month,
day of year, or week of year and day of week, those groups are
combined and used to determine the date. If more than one complete
set is present, the one at the rightmost position in the string is
used. The year is determined by interpreting the base time in the given
time zone.
- [6]
-
If the string contains none of the above sets, but has a day
of the month or day of the week, the day of the month or day of the week
are used to determine the date by interpreting the base time in the
given time zone and returning the given day of the current week or month.
(The week runs from Monday to Sunday, ISO8601-fashion.) If both day
of month and day of week are present, the day of the month takes
priority.
- [7]
-
If none of the above rules results in a usable date, the date
of the base time in the given time zone is used.
The time is also determined according to the fields that are present in the
preprocessed format string. In order of preference:
- [1]
-
If the string contains a %s format group, representing
seconds from the epoch, that group determines the time of day.
- [2]
-
If the string contains either an hour on the 24-hour clock
or an hour on the 12-hour clock plus an AM/PM indicator, that hour determines
the hour of the day. If the string further contains a group specifying
the minute of the hour, that group combines with the hour. If the string
further contains a group specifying the second of the minute, that group
combines with the hour and minute.
- [3]
-
If the string contains neither a %s format group nor
a group specifying the hour of the day, then midnight (00:00, the start
of the given date) is used.
The time zone is determined by either the -timezone or -gmt
options, or by using the current time zone.
If a format string lacks a %z or %Z format group,
it is possible for the time to be ambiguous because it appears twice
in the same day, once without and once with Daylight Saving Time.
If this situation occurs, the first occurrence of the time is chosen.
(For this reason, it is wise to have the input string contain the
time zone when converting local times. This caveat does not apply to
UTC times.)
The following format groups are recognized by the clock scan and
clock format commands.
- %a
-
On output, receives an abbreviation (e.g., Mon) for the day
of the week in the given locale. On input, matches the name of the day
of the week in the given locale (in either abbreviated or full form, or
any unique prefix of either form).
- %A
-
On output, receives the full name (e.g., Monday) of the day
of the week in the given locale. On input, matches the name of the day
of the week in the given locale (in either abbreviated or full form, or
any unique prefix of either form).
- %b
-
On output, receives an abbreviation (e.g., Jan) for the name
of the month in the given locale. On input, matches the name of the month
in the given locale (in either abbreviated or full form, or
any unique prefix of either form).
- %B
-
On output, receives the full name (e.g., January)
of the month in the given locale. On input, matches the name of the month
in the given locale (in either abbreviated or full form, or
any unique prefix of either form).
- %c
-
On output, receives a localized representation of date and time of day;
the localized representation is expected to use the Gregorian calendar.
On input, matches whatever %c produces.
- %C
-
On output, receives the number of the century in Indo-Arabic numerals.
On input, matches one or two digits, possibly with leading whitespace,
that are expected to be the number of the century.
- %d
-
On output, produces the number of the day of the month, as two decimal
digits. On input, matches one or two digits, possibly with leading
whitespace, that are expected to be the number of the day of the month.
- %D
-
This format group is synonymous with %m/%d/%Y. It should be
used only in exchanging data within the en_US locale, since
other locales typically do not use this order for the fields of the date.
- %e
-
On output, produces the number of the day of the month, as one or
two decimal digits (with a leading blank for one-digit dates).
On input, matches one or two digits, possibly with leading
whitespace, that are expected to be the number of the day of the month.
- %Ec
-
On output, produces a locale-dependent representation of the date and
time of day in the locale's alternative calendar. On input, matches
whatever %Ec produces. The locale's alternative calendar need not
be the Gregorian calendar.
- %EC
-
On output, produces a locale-dependent name of an era in the locale's
alternative calendar. On input, matches the name of the era or any
unique prefix.
- %EE
-
On output, produces the string B.C.E. or C.E., or a
string of the same meaning in the locale, to indicate whether %Y refers
to years before or after Year 1 of the Common Era. On input, accepts
the string B.C.E., B.C., C.E., A.D., or the
abbreviation appropriate to the current locale, and uses it to fix
whether %Y refers to years before or after Year 1 of the
Common Era.
- %Ex
-
On output, produces a locale-dependent representation of the date
in the locale's alternative calendar. On input, matches
whatever %Ex produces. The locale's alternative calendar need not
be the Gregorian calendar.
- %EX
-
On output, produces a locale-dependent representation of the
time of day in the locale's alternative numerals. On input, matches
whatever %EX produces.
- %Ey
-
On output, produces a locale-dependent number of the year of the era
in the locale's alternative calendar and numerals. On input, matches
such a number.
- %EY
-
On output, produces a representation of the year in the locale's
alternative calendar and numerals. On input, matches what %EY
produces. Often synonymous with %EC%Ey.
- %g
-
On output, produces a two-digit year number suitable for use with
the week-based ISO8601 calendar; that is, the year number corresponds
to the week number produced by %V. On input, accepts such
a two-digit year number, possibly with leading whitespace.
- %G
-
On output, produces a four-digit year number suitable for use with
the week-based ISO8601 calendar; that is, the year number corresponds
to the week number produced by %V. On input, accepts such
a four-digit year number, possibly with leading whitespace.
- %h
-
This format group is synonymous with %b.
- %H
-
On output, produces a two-digit number giving the hour of the day
(00-23) on a 24-hour clock. On input, accepts such a number.
- %I
-
On output, produces a two-digit number giving the hour of the day
(12-11) on a 12-hour clock. On input, accepts such a number.
- %j
-
On output, produces a three-digit number giving the day of the year
(001-366). On input, accepts such a number.
- %J
-
On output, produces a string of digits giving the Julian Day Number.
On input, accepts a string of digits and interprets it as a Julian Day Number.
The Julian Day Number is a count of the number of calendar days
that have elapsed since 1 January, 4713 BCE of the proleptic
Julian calendar. The epoch time of 1 January 1970 corresponds
to Julian Day Number 2440588.
- %k
-
On output, produces a one- or two-digit number giving the hour of the day
(0-23) on a 24-hour clock. On input, accepts such a number.
- %l
-
On output, produces a one- or two-digit number giving the hour of the day
(12-11) on a 12-hour clock. On input, accepts such a number.
- %m
-
On output, produces the number of the month (01-12) with exactly two
digits. On input, accepts two digits and interprets them as the number
of the month.
- %M
-
On output, produces the number of the minute of the hour (00-59)
with exactly two digits. On input, accepts two digits and interprets them
as the number of the minute of the hour.
- %N
-
On output, produces the number of the month (1-12) with one or two digits,
and a leading blank for one-digit dates.
On input, accepts one or two digits, possibly with leading whitespace,
and interprets them as the number of the month.
- %Od, %Oe, %OH, %OI, %Ok, %Ol, %Om, %OM, %OS, %Ou, %Ow, %Oy
-
All of these format groups are synonymous with their counterparts
without the
“O”,
except that the string is produced and parsed in the
locale-dependent alternative numerals.
- %p
-
On output, produces an indicator for the part of the day, AM
or PM, appropriate to the given locale. If the script of the
given locale supports multiple letterforms, lowercase is preferred.
On input, matches the representation AM or PM in
the given locale, in either case.
- %P
-
On output, produces an indicator for the part of the day, am
or pm, appropriate to the given locale. If the script of the
given locale supports multiple letterforms, uppercase is preferred.
On input, matches the representation AM or PM in
the given locale, in either case.
- %Q
-
This format group is reserved for internal use within the Tcl library.
- %r
-
On output, produces a locale-dependent time of day representation on a
12-hour clock. On input, accepts whatever %r produces.
- %R
-
On output, produces a locale-dependent time of day representation on a
24-hour clock. On input, accepts whatever %R produces.
- %s
-
On output, simply formats the timeVal argument as a decimal
integer and inserts it into the output string. On input, accepts
a decimal integer and uses is as the time value without any further
processing. Since %s uniquely determines a point in time, it
overrides all other input formats.
- %S
-
On output, produces a two-digit number of the second of the minute
(00-59). On input, accepts two digits and uses them as the second of the
minute.
- %t
-
On output, produces a TAB character. On input, matches a TAB character.
- %T
-
Synonymous with %H:%M:%S.
- %u
-
On output, produces the number of the day of the week
(1→Monday, 7→Sunday). On input, accepts a single digit and
interprets it as the day of the week. Sunday may be either 0 or
7.
- %U
-
On output, produces the ordinal number of the week of the year
(00-53). The first Sunday of the year is the first day of week 01. On
input accepts two digits which are otherwise ignored. This format
group is never used in determining an input date. This interpretation
of the week of the year was once common in US banking but is now
largely obsolete. See %V for the ISO8601 week number.
- %V
-
On output, produces the number of the ISO8601 week as a two digit
number (01-53). Week 01 is the week containing January 4; or the first
week of the year containing at least 4 days; or the week containing
the first Thursday of the year (the three statements are
equivalent). Each week begins on a Monday. On input, accepts the
ISO8601 week number.
- %w
-
On output, produces the ordinal number of the day of the week
(Sunday==0; Saturday==6). On input, accepts a single digit and
interprets it as the day of the week; Sunday may be represented as
either 0 or 7. Note that %w is not the ISO8601 weekday number,
which is produced and accepted by %u.
- %W
-
On output, produces a week number (00-53) within the year; week 01
begins on the first Monday of the year. On input, accepts two digits,
which are otherwise ignored. This format group is never used in
determining an input date. It is not the ISO8601 week number; that
week is produced and accepted by %V.
- %x
-
On output, produces the date in a locale-dependent representation. On
input, accepts whatever %x produces and is used to determine
calendar date.
- %X
-
On output, produces the time of day in a locale-dependent
representation. On input, accepts whatever %X produces and is used
to determine time of day.
- %y
-
On output, produces the two-digit year of the century. On input,
accepts two digits, and is used to determine calendar date. The
date is presumed to lie between 1938 and 2037 inclusive. Note
that %y does not yield a year appropriate for use with the ISO8601
week number %V; programs should use %g for that purpose.
- %Y
-
On output, produces the four-digit calendar year. On input,
accepts four digits and may be used to determine calendar date. Note
that %Y does not yield a year appropriate for use with the ISO8601
week number %V; programs should use %G for that purpose.
- %z
-
On output, produces the current time zone, expressed in hours and
minutes east (+hhmm) or west (-hhmm) of Greenwich. On input, accepts a
time zone specifier (see TIME ZONES below) that will be used to
determine the time zone.
- %Z
-
On output, produces the current time zone's name, possibly
translated to the given locale. On input, accepts a time zone
specifier (see TIME ZONES below) that will be used to determine the
time zone. This option should, in general, be used on input only when
parsing RFC822 dates. Other uses are fraught with ambiguity; for
instance, the string BST may represent British Summer Time or
Brazilian Standard Time. It is recommended that date/time strings for
use by computers use numeric time zones instead.
- %%
-
On output, produces a literal
“%”
character. On input, matches a literal
“%”
character.
- %+
-
Synonymous with
“%a %b %e %H:%M:%S %Z %Y”.
When the clock command is processing a local time, it has several
possible sources for the time zone to use. In order of preference, they
are:
- [1]
-
A time zone specified inside a string being parsed and matched by a %z
or %Z format group.
- [2]
-
A time zone specified with the -timezone option to the clock
command (or, equivalently, by -gmt 1).
- [3]
-
A time zone specified in an environment variable TCL_TZ.
- [4]
-
A time zone specified in an environment variable TZ.
- [5]
-
The local time zone from the Control Panel on Windows systems.
- [6]
-
The C library's idea of the local time zone, as defined by the
mktime and localtime functions.
In case [1] only, the string is tested to see if it is one
of the strings:
gmt ut utc bst wet wat at
nft nst ndt ast adt est edt
cst cdt mst mdt pst pdt yst
ydt hst hdt cat ahst nt idlw
cet cest met mewt mest swt sst
eet eest bt it zp4 zp5 ist
zp6 wast wadt jt cct jst cast
cadt east eadt gst nzt nzst nzdt
idle
If it is a string in the above list, it designates a known
time zone, and is interpreted as such.
For time zones in case [1] that do not match any of the above strings,
and always for cases [2]-[6], the following rules apply.
If the time zone begins with a colon, it is one of a
standardized list of names like :America/New_York
that give the rules for various locales. A complete list
of the location names is too lengthy to be listed here.
On most Tcl installations, the definitions of the locations
are to be found in named files in the directory
“/no_backup/tools/lib/tcl8.5/clock/tzdata”.
On some Unix systems, these files are omitted, and the definitions are
instead obtained from system files in
“/usr/share/zoneinfo”,
“/usr/share/lib/zoneinfo”
or
“/usr/local/etc/zoneinfo”.
As a special case, the name :localtime refers to
the local time zone as defined by the C library.
A time zone string consisting of a plus or minus sign followed by
four or six decimal digits is interpreted as an offset in
hours, minutes, and seconds (if six digits are present) from
UTC. The plus sign denotes a sign east of Greenwich;
the minus sign one west of Greenwich.
A time zone string conforming to the Posix specification of the TZ
environment variable will be recognized. The specification
may be found at
http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html.
Any other time zone string is processed by prefixing a colon and attempting
to use it as a location name, as above.
Developers wishing to localize the date and time formatting and parsing
are referred to http://tip.tcl.tk/173 for a
specification.
If the clock scan command is invoked without a -format
option, then it requests a free-form scan.
This form of scan is deprecated. The reason for the deprecation
is that there are too many ambiguities. (Does the string
“2000”
represent a year, a time of day, or a quantity?) No set of rules
for interpreting free-form dates and times has been found to
give unsurprising results in all cases.
If free-form scan is used, only the -base and -gmt
options are accepted. The -timezone and -locale
options will result in an error if -format is not supplied.
For the benefit of users who need to understand legacy code that
uses free-form scan, the documentation for how free-form scan
interprets a string is included here:
If only a time is
specified, the current date is assumed. If the inputString
does not contain a
time zone mnemonic, the local time zone is assumed, unless the -gmt
argument is true, in which case the clock value is calculated assuming
that the specified time is relative to Greenwich Mean Time.
-gmt, if specified, affects only the computed time value; it does not
impact the interpretation of -base.
If the -base flag is specified, the next argument should contain
an integer clock value. Only the date in this value is used, not the
time. This is useful for determining the time on a specific day or
doing other date-relative conversions.
The inputString argument consists of zero or more specifications of the
following form:
- time
-
A time of day, which is of the form: hh?:mm?:ss?? ?meridian? ?zone?
or hhmm ?meridian? ?zone?
If no meridian is specified, hh is interpreted on
a 24-hour clock.
- date
-
A specific month and day with optional year. The
acceptable formats are
“mm/dd?/yy?”,
“monthname dd?, yy?”,
“day, dd monthname ?yy?”,
“dd monthname yy”,
“?CC?yymmdd”,
and
“dd-monthname-?CC?yy”.
The default year is the current year. If the year is less
than 100, we treat the years 00-68 as 2000-2068 and the years 69-99
as 1969-1999. Not all platforms can represent the years 38-70, so
an error may result if these years are used.
- ISO 8601 point-in-time
-
An ISO 8601 point-in-time specification, such as
“CCyymmddThhmmss,”
where T is the literal
“T”,
“CCyymmdd hhmmss”,
or
“CCyymmddThh:mm:ss”.
Note that only these three formats are accepted.
The command does not accept the full range of point-in-time
specifications specified in ISO8601. Other formats can be recognized by
giving an explicit -format option to the clock scan command.
- relative time
-
A specification relative to the current time. The format is number
unit. Acceptable units are year, fortnight,
month, week, day,
hour, minute (or min), and second (or sec). The
unit can be specified as a singular or plural, as in 3 weeks.
These modifiers may also be specified:
tomorrow, yesterday, today, now,
last, this, next, ago.
The actual date is calculated according to the following steps.
First, any absolute date and/or time is processed and converted.
Using that time as the base, day-of-week specifications are added.
Next, relative specifications are used. If a date or day is
specified, and no absolute or relative time is given, midnight is
used. Finally, a correction is applied so that the correct hour of
the day is produced after allowing for daylight savings time
differences and the correct date is given when going from the end
of a long month to a short month.
msgcat
clock, date, time
Copyright (c) 2004 Kevin B. Kenny<EMAIL_ADDRESS>All rights reserved.
Copyright © 1995-1997 Roger E. Critchlow Jr.
Copyright © 2004 Kevin B. Kenny <kennykb(at)acm.org>. All rights reserved.


Swingtime
1.1
Site
About Swingtime
Installation
Demo
models
— Swingtime Object Model Definitions
views
— Swingtime Views
forms
— Swingtime Forms
utils
— Swingtime Utilities
conf
— Configuration Settings
Changes in Swingtime
Authors
Page
Authors
« Changes in Swingtime
Source
Authors
¶
David A Krauth <
dakrauth
@
gmail
.
com
>
James O’Donnell - setup script
siolag
brousch
muelli
FortschrittApps


CNGS Group is an international EPC/EPIC General Contractor – provider of proven tailor-made and cost-effective solutions for a wide range of engineering, construction and installations services, offshore and onshore, in certain parts of the world, focused on oil and gas industry and looking for opportunities in petrochemical, gas-to-liquid (GTL), gas-to-solid (GTS), LPG and LNG floating units, among others, etc.
Our reliable and proven partner is the Israeli company Baran Israel Ltd. Baran has proved record as engineering & construction company and successful experience in providing services from conceptual to detail design, procurement and constriction of various projects, among others, in the fields of process industry, telecommunication and infrastructure, in several parts of the world.


Overview
The following document outlines common use cases for RQ Data Connect and RQ Data Connect Bridge, which are collectively referred to as RQ Data Connect/Bridge in this guide.
Who Is This Guide For?
The intended audience for this guide is data analysts and business administrators interested in RQ Data Connect.
Onboarding Package
Contact your account manager to get started using RQ Data Connect/Bridge. They will help guide you through the steps of obtaining access credentials (onboarding package) and will provide you with a support liaison.
Authentication Options
See the table below to determine which method of authentication is best for you.
| If… | Then… |
|---|---|
| You want to authenticate using a web browser | See Browser Authentication |
| You want to authenticate using only a username and password | See Basic Authentication |
| You are using a program such as Excel that does not support headers | See URL Parameter Authentication |
| The above options do not apply to you | See Obtaining an Access Token |
Authentication Priority
If multiple methods of authentication are provided, priority is resolved as follows:
- Bearer Token
- Basic Token
- Auth URI Parameter
Example
| URI Parameters | Headers | Token Used |
|---|---|---|
| Auth=AAAA | Authorization: Bearer BBBB Authorization: Basic CCCC |
BBBB |
| Auth=AAAA | Authorization: Basic CCCC | CCCC |
| Auth=AAAA | AAAA |
Browser Authentication
RQ Data Connect supports Basic Authentication without a token using a web browser.
To use this method,
- Determine the full URL of the request
- Enter the URL into a web browser and press Enter
- Enter your username and password into the prompt that appears
It is important to note that this method will only work if there is NO TOKEN (header) on the request, otherwise the provided token will be used.
Basic Authentication
Basic Authentication allows you to authenticate using a username and password to create a Basic Token which will remain valid as long as your username and password do not change.
To generate a Basic Token, you can use the request Basic Authentication with Platform Credentials.
It is important to note that value of the Authorization
header in this request is a base 64 encoded version of your username and password. This value is not URL safe and should not be used as a Basic Token for authentication.
Example Request
GET https://rqdataconnectdemo.iqmetrix.net/session
Authorization: Basic vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw
Example Response
HTTP 200 Content-Type: application/json
{
"access_token": "b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz",
"isValid": true,
"ParentEntityId": 21090,
"RQEmployeeId": 3494,
"basic_token": "vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw",
"PreferredEndpoint": "https://rqdataconnect18.iqmetrix.net"
}
The basic_token
is placed in the Authorization
header of a request prefixed by the word Basic
.
Example
GET https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema
Authorization: Basic vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw
URL Parameter Authentication
URL Parameter Authentication allows you to authenticate without headers, such as when…
- Integrating with a system that does not support headers or
- Accessing a report through a basic URL is required
To authenticate using this method, you must first generate a Basic Token. This token will remain valid as long as your username and password do not change. See Basic Authentication for examples.
Once you have a Basic Token, it can be placed as a URL parameter in a request using the key Auth
.
Example
https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Auth=vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw
Compression Options
RQ Data Connect/Bridge supports the compression algorithms gzip and deflate in the Accept-Encoding
header.
To learn more about Data Compression, see Data Compression 101.
The examples below demonstrate how to use gzip or deflate compression when making a request.
gzip example
GET https://rqdataconnectdemo.iqmetrix.net/session
Authorization: Basic vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw
Accept-Encoding: gzip
deflate example
GET https://rqdataconnectdemo.iqmetrix.net/session
Authorization: Basic vRMt17P8rIBWWbVbLzLWjTNyLfvESgA2yfXhze0WZN7HSIl4slGV866p9dSw
Accept-Encoding: deflate
Response Options
RQ Data Connect/Bridge supports multiple response types using the Response
URI parameter.
If no parameter is provided the default response type is JSON.
See the table below for a complete list of response types.
| Format | Response Type | Notes | Example URL |
|---|---|---|---|
| JSON | application/json | Default response type | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema |
| JSON (DataTable) | application/json | Contains extra data about report columns | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Response=JsonDataTable |
| CSV | text/csv | Any commas in the response are surrounded by quotes (“) | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Response=Csv |
| XML | text/xml | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Response=Xml | |
| XML (DataTable) | text/xml | Contains extra data about report columns | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Response=XmlDataTable |
| Excel File | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Binary .xlsx File that does not support live refresh | https://rqdataconnectdemo.iqmetrix.net/bridge/current/schema?Response=Excel |
Running a Report
This example will demonstrate how RQ Data Connect can be used to get the data that drives a report in RQ.
Step 1 - Selecting a Report
See Master List for a list of available requests in RQ Data Connect.
For this example we will retrieve the data for the Graphed Performance Metrix Report in RQ using the request Getting the Graphed Performance Metrix Report.
This example will use Browser Authentication for authentication, no compression and the default response type (json).
(Optional) Step 2 - Setting a Report Level
Many reports allow you to optionally specify a company tree level at which to perform the report.
To set the report to a specific level, determine the available levels using Getting Location Types.
Example Request
GET /lists/LocationType
Example Response
HTTP 200 Content-Type: application/json
[
{
"Type": "Company"
},
{
"Type": "Region"
},
{
"Type": "District"
},
{
"Type": "Store"
},
{
"Type": "Channel"
}
]
This example will run the report at the Store
level.
(Optional) Step 3 - Specifying Report Level
To run the report for all nodes at a level, such as All Locations or All Channels, LocationTypeIDs
is set to -1
or *
.
To run the report for a subset of nodes at a level, such as one Location or one Region, LocationTypeIDs
should be set to a comma separated list of identifiers.
A list of identifiers in a level can be retrieved using Getting Location Ids. The LocationType
URI parameter is the value determined in Step 1.
Example Request
GET /lists/LocationIDs?LocationType=Store
Example Response
HTTP 200 Content-Type: application/json
[
{
"ID": 6923,
"Description": "Tampa",
"EntityID": 453,
},
{
"ID": 6924,
"Description": "Fairweather",
"EntityID": 454,
},
{
"ID": 6926,
"Description": "Cornwall",
"EntityID": 466,
},
...
]
This example will use IDs 6923
and 6924
to specify the report will be run for two stores.
Step 4 - Determining URI Parameters
Each report has different URI parameters used to determine the contents of the report.
For this example, the following URI parameters will be used.
| URI Parameter | Description | Example Value |
|---|---|---|
| PeriodId | Identifier for a Period in RQ, or -1 if StartDate and StopDate are used | -1 |
| StartDate | Date to start report | 1970-01-01T12:00:00.000Z |
| StopDate | Date to end report | 2016-01-01T12:00:00.000Z |
| HideRebates | A flag to indicate if rebates should be included in the report | -1 |
Step 5 - Getting the Report
The values from Steps 1-4 can be combined to get the Performance Metrix Report using Getting the Graphed Performance Metrix Report.
Example Request
GET /reports/graphedperformancemetricsreport_performancemetrix?LocationType=Store&LocationIDs=6923,6924&PeriodID=-1&StartDate=1970-01-01T12:00:00.000Z&StopDate=2016-01-01T12:00:00.000Z&HideRebates=-1&LanguageCode=en-us
Example Response
HTTP 200 Content-Type: application/json
[
{
"ID": 6,
"Name": "Accessories",
"AttachmentRate": "1249 : 2",
"AttachmentRateTarget": "0 : 0",
"DisplayFormat": 2,
"IsAttachmentRate": true,
"Margin": null,
"MarginTarget": null,
"Priority": -1,
"Profit": null,
"ProfitTarget": null,
"Quantity": null,
"QuantityTarget": null,
"Sales": null,
"SalesTarget": null
},
...
]
Importing into Excel
This section explains how you can import data from RQ Data Connect/Bridge directly into Excel (2016).
For this example, we will get the Inventory Listing Report with the following parameters:
Step 1 - Load From Web
First, open Excel and create a new workbook.
In the top bar, click on Data -> New Query -> From Other Sources -> From Web.
Step 2 - Enter URL
Enter the Request URL into the URL box and click OK.
Ensure the Request URL includes Response=Xml
so Excel can load the data.
Step 3 - Access Web Content
If this is the first time you are accessing the endpoint in Excel, a window will appear with authentication options.
Select Basic in the sidebar and enter your username and password, then click Connect.
To learn more about authentication methods, see Authentication Options.
Step 4 - Select Record
A navigator will appear and load tables into a list.
Select a record and click the Load button.
Step 5 - View Table
The record will be placed into a table in Excel, as shown below.
Using Postman
This example will demonstrate how to generate a Basic Token using the request Basic Authentication with Platform Credentials and Postman.
Step 1 - Import Collection
For Chrome or Mac users, click the button below to import the collection directly into Postman. Alternatively, you can download the collection.
Step 2 - Open Collection
Click on RQ Data Connect Guide, a collection in the sidebar.
If you do not see the collection, ensure the "Collection” tab is selected and not “History”.
Step 3 - Open Request
The collection will open showing a list of requests. Click on Basic Authentication to load the request
Step 4 - Change Environment Values
Click on the environment selector (drop down box in top right corner) and select “Manage Environments”
Click on “postmanEnv” in the list to bring up an edit screen
Modify the following values:
- en - Environment to access. For production/live, leave empty. For sandbox, use “demo”
- username - Username from your onboarding package
- password - Password from your onboarding package
Click Update to update the postman environment and then click X to close the editor
Step 5 - Perform the Request
Click on the Send button to perform the request.
The Basic Token is listed in the response as basic_token


| Exchange | High | Low | Open | Close | Volume | Interval | CurrencyPair | Time |
|---|---|---|---|---|---|---|---|---|
| {{$exchange.ExchangeName}} | {{$exchange.High}} | {{$exchange.Low}} | {{$exchange.Open}} | {{$exchange.Close}} | {{$exchange.Volume}} | {{$exchange.Interval}} | {{$exchange.CurrencyPair}} | {{$exchange.Time}} |


| as_factor | Convert input to a factor |
| as_factor.character | Convert input to a factor |
| as_factor.factor | Convert input to a factor |
| as_factor.logical | Convert input to a factor |
| as_factor.numeric | Convert input to a factor |
| fct_anon | Anonymise factor levels |
| fct_c | Concatenate factors, combining levels |
| fct_collapse | Collapse factor levels into manually defined groups |
| fct_count | Count entries in a factor |
| fct_cross | Combine levels from two or more factors to create a new factor |
| fct_drop | Drop unused levels |
| fct_expand | Add additional levels to a factor |
| fct_explicit_na | Make missing values explicit |
| fct_infreq | Reorder factor levels by first appearance, frequency, or numeric order |
| fct_inorder | Reorder factor levels by first appearance, frequency, or numeric order |
| fct_inseq | Reorder factor levels by first appearance, frequency, or numeric order |
| fct_lump | Lump together factor levels into "other" |
| fct_lump_lowfreq | Lump together factor levels into "other" |
| fct_lump_min | Lump together factor levels into "other" |
| fct_lump_n | Lump together factor levels into "other" |
| fct_lump_prop | Lump together factor levels into "other" |
| fct_match | Test for presence of levels in a factor |
| fct_other | Replace levels with "other" |
| fct_recode | Change factor levels by hand |
| fct_relabel | Automatically relabel factor levels, collapse as necessary |
| fct_relevel | Reorder factor levels by hand |
| fct_reorder | Reorder factor levels by sorting along another variable |
| fct_reorder2 | Reorder factor levels by sorting along another variable |
| fct_rev | Reverse order of factor levels |
| fct_shift | Shift factor levels to left or right, wrapping around at end |
| fct_shuffle | Randomly permute factor levels |
| fct_unify | Unify the levels in a list of factors |
| fct_unique | Unique values of a factor |
| first2 | Reorder factor levels by sorting along another variable |
| gss_cat | A sample of categorical variables from the General Social survey |
| last2 | Reorder factor levels by sorting along another variable |
| lvls | Low-level functions for manipulating levels |
| lvls_expand | Low-level functions for manipulating levels |
| lvls_reorder | Low-level functions for manipulating levels |
| lvls_revalue | Low-level functions for manipulating levels |
| lvls_union | Find all levels in a list of factors |


Class for a Shiny widget
w <- app$findWidget(name, iotype = c("auto", "input", "output")) w$getName() w$getElement() w$getType() w$getIoType() w$isInput() w$isOutput() w$getValue() w$setValue(value) w$sendKeys(keys) w$listTabs()
A ShinyDriver
object.
A Widget
object.
Name of a Shiny widget.
Character scalar, whether the widget is ‘input’ or ‘output’. The default ‘auto’ value works well, provided that widgets have unique names. (Shiny allows an input and an output widget with the same name.)
Value to set for the widget. Its interpretation depends on the type of the widget, see details below.
Keys to send to the widget. See the sendKeys
method of the Element
class in the
webdriver
package.
A Widget
object represents a Shiny input or output widget.
app$findWidget
creates a widget object from a
ShinyDriver
object.
w$getName()
returns the name of the widget.
w$getElement()
returns an HTML element. This is an
Element
object from the webdriver
package.
w$getType()
returns the type of the widget, possible values
are textInput
, selectInput
, etc.
w$getIoType()
returns ‘input’ or ‘output’,
whether the widget is an input or output widget.
w$isInput()
returns TRUE
for input widgets, FALSE
otherwise.
w$isOutput()
returns TRUE
for output widgets, FALSE
otherwise.
w$getValue()
returns the value of the widget. The exact type
returned depends on the type of the widget. TODO: list widgets and their
return types.
w$setValue()
sets the value of the widget, through the web
browser. Different widget types expect different different value
arguments. TODO: list widgets and types.
w$sendKeys
sends the specified keys to the HTML element of the
widget.
w$listTabs
lists the tab names of a tabsetPanel
widget.
It fails for other types of widgets.
{ }#> NULL


AutoFocus manages focus on focusable element on load.
AutoFocus is applied to any focusable input element on initial load. It's disabled by default and needs to be enabled manually.
| Name | Type | Default | Description |
|---|---|---|---|
| autofocus | boolean | null | When present, it specifies that the component should automatically get focus on load. |
Directive has no events.
Directive does not apply any styling to host.
None.


Hello Team Jawad,
Greetings from team ERR_404!
We are excited to welcome you to the event on 7th October 2017 at M.H. Saboo Siddik College of Engineering.
Prepare yourself to engulf in 24 hours of coding with the most geeky coders from all over Maharashtra.
Note that all the participants need to bring the following mandatory things
1. Laptops
2. Spike Guard
3. Stationary
4. College ID
5. Duly filled undertaking by all participants
Dinner, breakfast and regular refreshments are on us :)
We have a special custom T-shirts for all participants as ERR_404 swag. Participants who wish to buy these for Rs 300 please
fill out the form below:
Please note that the order cannot be cancelled once the form is filled. :/
We expect to see you soon.
Till then, Happy Coding ;)
Venue:
M.H. Saboo Siddik College of Engineering
8, Saboo Siddik Polytechnic Road, New Nagpada, Byculla, Mumbai, Maharashtra 400008, India
Reporting Time:
10:00 AM
7th October 2017
FAQ\'s:
Undertaking:
Regards,
Team ERR_404


Team Money-With-Wings: About Us
“Society is used in the service of capitalism,” says Derrida. However, any number of theories concerning the bridge between reality and class may be found. The main theme of the works of Gibson is not discourse as such, but neodiscourse.
In the works of Gibson, a predominant concept is the distinction between destruction and creation. It could be said that Sartre uses the term ‘the patriarchialist paradigm of expression’ to denote a mythopoetical whole. Foucault suggests the use of textual predialectic theory to read and analyse sexual identity.
Robert Thompson is a developer who creates more problems than he fixes. His strong desire to sleep is rarely filled.
He came to town like a midwinter storm. He rode through the fields, so handsome and strong. His eyes was his tools and his smile was his gun.  If it hadn't been for Cotton-Eye Joe, I'd been married a long time ago.
Where did you come from, where did you go? Where did you come from, Cotton-Eye Joe? If it hadn't been for Cotton-Eye Joe, I'd been married a long time ago.
Sarah is an aspiring developer who once had an altercation at a rest area with the Insane Clown Posse.
Even the worst thing we can do here is good.  I get started on it and I have a hard time stopping. Type that up. The only prerequisite is that it makes you happy. If it makes you happy then it's good. All you need to develop is a few tools, a little instruction, and a vision in your mind.
Just go back and put one more happy line of code in there. You can get away with a lot. Just relax and let it flow. That easy. Almost everything is going to happen for you automatically - you don't have to spend any time refactoring or worrying. This is an example of what you can do with just a few things, a little imagination and a happy dream in your heart.
Kevin is a business professional and aspiring developer currently residing in Portland, OR.


Related Datasets
This content is not available in the prototype but in future will include related datasets
This content is not available in the prototype but in future will include statistical bulletins and analytical articles using this dataset
We'd like comments on structure, presentation or usability of this prototype and they'll be used to help us develop it further.


object MarriagesSchema
Schema for the 'marriages' table. It contains constants for the column names of the table, and SQLite statement for creation.
This table does not contain a primary key: a composite primary key from the two ID columns would not work if the same two people re-married; and a separate ID referring to the marriage would have no purpose. Hence, there is no primary key and the correct row can be identified by using the two ID columns present.
See Also
const val COL_END_DATE_DAY: String |
|
const val COL_END_DATE_MONTH: String |
|
const val COL_END_DATE_YEAR: String |
|
const val COL_ID_1: String |
|
const val COL_ID_2: String |
|
const val COL_PLACE_OF_MARRIAGE: String |
|
const val COL_START_DATE_DAY: String |
|
const val COL_START_DATE_MONTH: String |
|
const val COL_START_DATE_YEAR: String |
|
const val SQL_CREATE: String
SQLite statement which creates the "marriages" table upon execution. |
|
const val TABLE_NAME: String |