EPOCH is a fixed date and time used as a reference from which a computer measures system time.
The table below shows other important computing timestamps. Unix is probably the most common timestamp used today, but there are many others. Something that many people do not realise.
Date | Uses | Rationale | Bit Depth |
---|---|---|---|
time()
import time; time.time()
Time.now (or Time.new)
To display the epoch: Time.now.to_i
time
long epoch = System.currentTimeMillis()/1000; // Returns epoch in seconds.
DateTimeOffset.Now.ToUnixTimeSeconds() // (.NET Framework 4.6+/.NET Core)
older versions: var epoch = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
[[NSDate date] timeIntervalSince1970]; // returns double
NSString *currentTimestamp = [NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]];
double now = std::chrono::duration_cast
(std::chrono::system_clock::now().time_since_epoch()).count();
epoch = os.time([date])
_DateDiff('s', "1970/01/01 00:00:00", _NowCalc())
Epoch := DateTimetoUnix(Now); // Tested in Delphi 2010.
as.numeric(Sys.time())
erlang:system_time(seconds). // version 18+
older versions: calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.
SELECT unix_timestamp(now())
SELECT extract(epoch FROM now());
SELECT strftime('%s', 'now');
SELECT (CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE) - TO_DATE('01/01/1970','DD/MM/YYYY')) * 24 * 60 * 60 FROM DUAL;
SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
SELECT dbinfo('utc_current') FROM sysmaster:sysdual;
Math.floor(new Date().getTime()/1000.0) // The getTime method returns the time in milliseconds.
DATETIME() - {^1970/01/01 00:00:00} // Warning: time zones not handled correctly
time.Now().Unix()
<cfset epochTime = left(getTickcount(), 10)>
clock seconds
date +%s
/usr/bin/nawk 'BEGIN {print srand()}' // Solaris doesn't support date +%s, but the default seed value for nawk's random-number generator is the number of seconds since the epoch.
[int][double]::Parse((Get-Date (get-date).touniversaltime() -UFormat %s))
Command line: perl -e "print time" // (If Perl is installed on your system)
strtotime("15 November 2018") // converts most English date texts
or:
date_create('11/15/2018')->format('U') // using DateTime class
import calendar, time
calendar.timegm(time.strptime('2000-01-01 12:34:00', '%Y-%m-%d %H:%M:%S'))
Time.local(year, month, day, hour, minute, second, usec ) // or Time.gm for GMT/UTC input
To display add .to_i
Use the Perl Epoch routines
long epoch = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("01/01/1970 01:00:00").getTime() / 1000; // Timestamp in seconds, remove '/1000' for milliseconds.
DateDiff("s", "01/01/1970 00:00:00", time field)
_DateDiff('s', "1970/01/01 00:00:00", "YYYY/MM/DD HH:MM:SS")
Epoch := DateTimeToUnix(StrToDateTime(myString));
Use the C Epoch Converter routines
as.numeric(as.POSIXct("YYYY-MM-dd HH:mm:ss", tz = "GMT", origin="1970-01-01")) // The origin parameter is optional
Example code
SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)
int(parseDateTime(datetime).getTime()/1000);
SELECT unix_timestamp(time) // Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD
SELECT extract(epoch FROM date('2000-01-01 12:34'));
With timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2018-02-16 20:38:40-08');
With interval: SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
SELECT strftime('%s', timestring);
SELECT DATEDIFF(s, '1970-01-01 00:00:00', time field)
Use the JavaScript Date object
date +%s -d"Jan 1, 1980 00:00:01" // Replace '-d' with '-ud' to input in GMT/UTC time.
date(output format, epoch); // Output format example: 'r' = RFC 2822 date
import time
time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(epoch)) // Replace time.localtime with time.gmtime for GMT time.
Or using datetime:
import datetime
datetime.datetime.utcfromtimestamp(epoch).replace(tzinfo=datetime.timezone.utc)
Time.at(epoch)
private string epoch2string(int epoch) {
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(epoch).ToShortDateString();
}
Use the Perl Epoch routines
String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000)); // Epoch in seconds, remove '*1000' for milliseconds.
datestring = os.date([format[,epoch]])
DateAdd("s", epoch, "01/01/1970 00:00:00")
_DateAdd("s", $EpochSeconds , "1970/01/01 00:00:00")
myString := DateTimeToStr(UnixToDateTime(Epoch)); // Where Epoch is a signed integer.
Use the C Epoch Converter routines
NSDate * myDate = [NSDate dateWithTimeIntervalSince1970:epoch];
NSLog(@"%@", date);
as.POSIXct(epoch, origin="1970-01-01", tz="GMT")
Example code
DateAdd("s",epoch,"1/1/1970");
FROM_UNIXTIME(epoch, optional output format) // Default output format is YYY-MM-DD HH:MM:SS. If you need support for negative timestamps:
DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(0), interval -315619200 second),"%Y-%m-%d") // replace -315619200 with epoch
PostgreSQL version 8.1 and higher:
SELECT to_timestamp(epoch);
Older versions:
SELECT TIMESTAMP WITH TIME ZONE 'epoch' + epoch * INTERVAL '1 second';
SELECT datetime(epoch_to_convert, 'unixepoch'); // or local timezone:
SELECT datetime(epoch_to_convert, 'unixepoch', 'localtime');
SELECT to_date('01-JAN-1970','dd-mon-yyyy')+(1526357743/60/60/24) from dual; // Replace 1526357743 with epoch.
DATEADD(s, epoch, '1970-01-01 00:00:00')
SELECT dbinfo('utc_to_datetime',epoch) FROM sysmaster:sysdual;
=(A1 / 86400) + 25569 // Format the result cell for date/time, the result will be in GMT time (A1 is the cell with the epoch number). For other time zones:
=((A1 +/- time zone adjustment) / 86400) + 25569.
DateAdd("s", {EpochTimeStampField}-14400, #1/1/1970 00:00:00#) // -14400 used for Eastern Standard Time. See Time Zones.
Use the JavaScript Date object
clock format 1325376000 // Documentation
datestr(719529+TimeInSeconds/86400,'dd-mmm-yyyy HH:MM:SS')
select 996673954::int4::abstime::timestamp;
date -d @1520000000 // Replace 1520000000 with your epoch, needs recent version of 'date'. Replace '-d' with '-ud' for GMT/UTC time.
date -j -r 1520000000
Function get-epochDate ($epochDate) {
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($epochDate))
}, then use: get-epochDate 1520000000. // Works for Windows PowerShell v1 and v2
Command line: perl -e "print scalar(localtime(epoch))" // (If Perl is installed) Replace 'localtime' with 'gmtime' for GMT/UTC time.