EPOCH is a fixed date and time used as a reference from which a computer measures system time.

Computing Epoch Timestamps

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

How to Get the Current Epoch Time in Various Programming Languages

PHP

time()

Python

import time; time.time()

Ruby

Time.now (or Time.new)
        To display the epoch: Time.now.to_i

Perl

time

Java

long epoch = System.currentTimeMillis()/1000; // Returns epoch in seconds.

C#

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;

Objective-C

[[NSDate date] timeIntervalSince1970]; // returns double
        NSString *currentTimestamp = [NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]];

C++11

double now = std::chrono::duration_cast
        (std::chrono::system_clock::now().time_since_epoch()).count();

Lua

epoch = os.time([date])

AutoIT

_DateDiff('s', "1970/01/01 00:00:00", _NowCalc())

Delphi

Epoch := DateTimetoUnix(Now); // Tested in Delphi 2010.

R

as.numeric(Sys.time())

Erlang/OTP

erlang:system_time(seconds). // version 18+
        older versions: calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.

MySQL

SELECT unix_timestamp(now())

PostgreSQL

SELECT extract(epoch FROM now());

SQLite

SELECT strftime('%s', 'now');

Oracle PL/SQL

SELECT (CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE) - TO_DATE('01/01/1970','DD/MM/YYYY')) * 24 * 60 * 60 FROM DUAL;

SQL Server

SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

IBM Informix

SELECT dbinfo('utc_current') FROM sysmaster:sysdual;

JavaScript

Math.floor(new Date().getTime()/1000.0) // The getTime method returns the time in milliseconds.

Visual FoxPro

DATETIME() - {^1970/01/01 00:00:00} // Warning: time zones not handled correctly

Go

time.Now().Unix()

Adobe ColdFusion

<cfset epochTime = left(getTickcount(), 10)>

Tcl/Tk

clock seconds

Unix/Linux Shell

date +%s

Solaris

/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.

PowerShell

[int][double]::Parse((Get-Date (get-date).touniversaltime() -UFormat %s))

Other OS's

Command line: perl -e "print time" // (If Perl is installed on your system)

Convert from Human-Readable Date to Epoch

PHP

strtotime("15 November 2018") // converts most English date texts
        or:
        date_create('11/15/2018')->format('U') // using DateTime class

Python

import calendar, time
        calendar.timegm(time.strptime('2000-01-01 12:34:00', '%Y-%m-%d %H:%M:%S'))

Ruby

Time.local(year, month, day, hour, minute, second, usec ) // or Time.gm for GMT/UTC input
        To display add .to_i

Perl

Use the Perl Epoch routines

Java

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.

VBScript/ASP

DateDiff("s", "01/01/1970 00:00:00", time field)

AutoIT

_DateDiff('s', "1970/01/01 00:00:00", "YYYY/MM/DD HH:MM:SS")

Delphi

Epoch := DateTimeToUnix(StrToDateTime(myString));

C

Use the C Epoch Converter routines

R

as.numeric(as.POSIXct("YYYY-MM-dd HH:mm:ss", tz = "GMT", origin="1970-01-01")) // The origin parameter is optional

Go

Example code

Rust

SystemTime::now().duration_since(SystemTime::UNIX_EPOCH)

Adobe ColdFusion

int(parseDateTime(datetime).getTime()/1000);

MySQL

SELECT unix_timestamp(time) // Time format: YYYY-MM-DD HH:MM:SS or YYMMDD or YYYYMMDD

PostgreSQL

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');

SQLite

SELECT strftime('%s', timestring);

SQL Server

SELECT DATEDIFF(s, '1970-01-01 00:00:00', time field)

JavaScript

Use the JavaScript Date object

Unix/Linux Shell

date +%s -d"Jan 1, 1980 00:00:01" // Replace '-d' with '-ud' to input in GMT/UTC time.

Convert from Epoch to Human-Readable Date

PHP

date(output format, epoch); // Output format example: 'r' = RFC 2822 date

Python

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)

Ruby

Time.at(epoch)

C#

private string epoch2string(int epoch) {
            return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(epoch).ToShortDateString();
        }

Perl

Use the Perl Epoch routines

Java

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.

Lua

datestring = os.date([format[,epoch]])

VBScript/ASP

DateAdd("s", epoch, "01/01/1970 00:00:00")

AutoIT

_DateAdd("s", $EpochSeconds , "1970/01/01 00:00:00")

Delphi

myString := DateTimeToStr(UnixToDateTime(Epoch)); // Where Epoch is a signed integer.

C

Use the C Epoch Converter routines

Objective-C

NSDate * myDate = [NSDate dateWithTimeIntervalSince1970:epoch];
        NSLog(@"%@", date);

R

as.POSIXct(epoch, origin="1970-01-01", tz="GMT")

Go

Example code

Adobe ColdFusion

DateAdd("s",epoch,"1/1/1970");

MySQL

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

PostgreSQL version 8.1 and higher:
        SELECT to_timestamp(epoch);
        Older versions:
        SELECT TIMESTAMP WITH TIME ZONE 'epoch' + epoch * INTERVAL '1 second';

SQLite

SELECT datetime(epoch_to_convert, 'unixepoch'); // or local timezone:
        SELECT datetime(epoch_to_convert, 'unixepoch', 'localtime');

Oracle PL/SQL

SELECT to_date('01-JAN-1970','dd-mon-yyyy')+(1526357743/60/60/24) from dual; // Replace 1526357743 with epoch.

SQL Server

DATEADD(s, epoch, '1970-01-01 00:00:00')

IBM Informix

SELECT dbinfo('utc_to_datetime',epoch) FROM sysmaster:sysdual;

Microsoft Excel / LibreOffice Calc

=(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.

Crystal Reports

DateAdd("s", {EpochTimeStampField}-14400, #1/1/1970 00:00:00#) // -14400 used for Eastern Standard Time. See Time Zones.

JavaScript

Use the JavaScript Date object

Tcl/Tk

clock format 1325376000 // Documentation

MATLAB

datestr(719529+TimeInSeconds/86400,'dd-mmm-yyyy HH:MM:SS')

IBM PureData System for Analytics

select 996673954::int4::abstime::timestamp;

Unix/Linux Shell

date -d @1520000000 // Replace 1520000000 with your epoch, needs recent version of 'date'. Replace '-d' with '-ud' for GMT/UTC time.

Mac OS X

date -j -r 1520000000

PowerShell

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

Other OS's

Command line: perl -e "print scalar(localtime(epoch))" // (If Perl is installed) Replace 'localtime' with 'gmtime' for GMT/UTC time.