Create a new Date with the given properties (all are Integer values, except rawSeconds, which is a Float). These arguments are also the names of instance variables of the Date object.
The constructor initializes the instance in one of the following ways (in order of priority):
If Date.new is called without any arguments, it will return the current time, the same as calling *localtime.
If a rawSeconds argument is specified, it is used to set (overwrite) all the other properties (year, month, day, hour, minute, second, dayOfWeek), regardless of whether they are nil or not.
The most typical usage is to create a Date from a year/month/day and possibly hour/minute/second. All of these properties (except year) have default values (month = 1, day = 1, hour = 0, minute = 0, second = 0). rawSeconds is computed based on the other properties. There is no default year -- if no year is provided, an error is thrown.
NOTE: On Windows, Date creation fails for dates before Unix epoch, i.e. before January 1st, 1970.
It is possible to specify dates with "out of range" values that will be resolved into a valid range -- this allows simple date offset calculations to be performed (see example below).
NOTE: The dayOfWeek argument is always calculated. If it is specified, the value will be overwritten (it only remains a constructor argument for reasons of backward compatibility).
Create a new Date object from a date/time string, which is parsed according to the provided format string.
Arguments:
string
The date/time string to parse, for example "2017-10-25 13:25:55".
format
The format to use to parse the date string. Note that the supported input formats are slightly different from those of the -format (output) method. In particular, some of the "combined" formats (such as %F or %T) are not supported for input, you must expand them out ("%F" -> "%Y-%m-%d" and "%T" -> "%H:%M:%S"). The full list of supported input format flags may be found here.
To parse the above example string, you would use "%Y-%m-%d %H:%M:%S".
Get or set the receiver's raw time in seconds (relative to the "epoch" of January 1, 1970).
If you modify this property, the other properties will not update. See note at -resolve -- there is no "resolveFromRawSeconds" method, but you can generate a new self-consistent Date instance by passing the rawSeconds as an argument to *new.
NOTE: This value is not portable between machines, because of differences in the way the underlying time functions are implemented, and because of time zone differences. To save/restore Date values between runs and on different platforms, it is recommended not to use the rawSeconds value. Instead, you should serialize the Date to a string, for example:
Resolve any inconsistencies in the Date object, updating all the fields (in particular dayOfWeek and rawSeconds) as necessary.
If the instance properties (year, month, day, hour, minute, second) are modified, the Date will be in an inconsistent state -- its rawSeconds won't reflect the modifications, and the properties may fall outside of "normal" ranges (month: 1-12, day:1-31, hour: 0-23, minute/second: 0-59). Also, using the string conversion methods may give strange results. Calling the resolve method will put things back into a consistent state.
NOTE: There is no "resolveFromRawSeconds" method. If you modify the rawSeconds property, the other properties won't change to reflect it. If you want to "resolve" in the other direction, simply create a new Date object using the rawSeconds:
Replaced by the day of the month as a decimal number [1,31]; a single digit is preceded by a space. [ tm_mday]
%F
Equivalent to %Y - %m - %d (the ISO 8601:2000 standard date format). [ tm_year, tm_mon, tm_mday]
%g
Replaced by the last 2 digits of the week-based year (see below) as a decimal number [00,99]. [ tm_year, tm_wday, tm_yday]
%G
Replaced by the week-based year (see below) as a decimal number (for example, 1977). [ tm_year, tm_wday, tm_yday]
%h
Equivalent to %b. [ tm_mon]
%H
Replaced by the hour (24-hour clock) as a decimal number [00,23]. [ tm_hour]
%I
Replaced by the hour (12-hour clock) as a decimal number [01,12]. [ tm_hour]
%j
Replaced by the day of the year as a decimal number [001,366]. [ tm_yday]
%m
Replaced by the month as a decimal number [01,12]. [ tm_mon]
%M
Replaced by the minute as a decimal number [00,59]. [ tm_min]
%n
Replaced by a <newline>.
%p
Replaced by the locale's equivalent of either a.m. or p.m. [ tm_hour]
%r
Replaced by the time in a.m. and p.m. notation; in the POSIX locale this shall be equivalent to %I :%M :%S%p. [ tm_hour, tm_min, tm_sec]
%R
Replaced by the time in 24-hour notation (%H : %M). [ tm_hour, tm_min]
%S
Replaced by the second as a decimal number [00,60]. [ tm_sec]
%t
Replaced by a <tab>.
%T
Replaced by the time ( %H : %M : %S). [ tm_hour, tm_min, tm_sec]
%u
Replaced by the weekday as a decimal number [1,7], with 1 representing Monday. [ tm_wday]
%U
Replaced by the week number of the year as a decimal number [00,53]. The first Sunday of January is the first day of week 1; days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]
%V
Replaced by the week number of the year (Monday as the first day of the week) as a decimal number [01,53]. If the week containing 1 January has four or more days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1. Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday]
%w
Replaced by the weekday as a decimal number [0,6], with 0 representing Sunday. [ tm_wday]
%W
Replaced by the week number of the year as a decimal number [00,53]. The first Monday of January is the first day of week 1; days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]
%x
Replaced by the locale's appropriate date representation.
%X
Replaced by the locale's appropriate time representation.
%y
Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year]
%Y
Replaced by the year as a decimal number (for example, 1997). [ tm_year]
%z
Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm), or by no characters if no timezone is determinable. For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). If tm_isdst is zero, the standard time offset is used. If tm_isdst is greater than zero, the daylight savings time offset is used. If tm_isdst is negative, no characters are returned. [ tm_isdst]
%Z
Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [ tm_isdst]
%%
Replaced by %.
If a conversion specification does not correspond to any of the above, the behavior is undefined.