Convert python datetime to epoch with strftime
If you want to convert a python datetime to seconds since epoch you could do it explicitly:
>>> (datetime.datetime(2012,4,1,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0
In Python 3.3+ you can use timestamp()
instead:
>>> datetime.datetime(2012,4,1,0,0).timestamp()
1333234800.0
Why you should not use datetime.strftime('%s')
Python doesn't actually support %s as an argument to strftime (if you check at http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior it's not in the list), the only reason it's working is because Python is passing the information to your system's strftime, which uses your local timezone.
>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
How can I convert a DateTime to the number of seconds since 1970?
That's basically it. These are the methods I use to convert to and from Unix epoch time:
public static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
return origin.AddSeconds(timestamp);
}
public static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan diff = date.ToUniversalTime() - origin;
return Math.Floor(diff.TotalSeconds);
}
Update: As of .Net Core 2.1 and .Net Standard 2.1 a DateTime equal to the Unix Epoch can be obtained from the static DateTime.UnixEpoch
.
How can I convert the number of seconds since Jan 1st 1970 into a datetime value?
static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
...
DateTime time = epoch.AddSeconds(utcNow);
You can also use this in reverse:
var seconds = (time - epoch).TotalSeconds;
(which gives a double
, but you can cast it to int
or long
etc)
Visual C++ how to convert Datetime to number of seconds since 1970
You can do this using a TimeSpan
of the difference between the two dates. Something like this:
DateTime dtDateYouWantToConvert = /* .... */
DateTime dtReference(1970, 1, 1, 0, 0, 0);
TimeSpan tsDiff = dtDateYouWantToConvert - dtReference;
// calculate number of seconds (including fractional) since 1/1/1970
double dSeconds = tsDiff.TotalSeconds;
How can I find out the number of seconds since 1970 using DateTime in C#
Almost same but looks easier.
DateTime PreviousDateTime = new DateTime(1970, 1, 1);
var stringSecsNow = (DateTime.UtcNow - PreviousDateTime).TotalSeconds.ToString();
In Python, how do you convert a `datetime` object to seconds?
For the special date of January 1, 1970 there are multiple options.
For any other starting date you need to get the difference between the two dates in seconds. Subtracting two dates gives a timedelta
object, which as of Python 2.7 has a total_seconds()
function.
>>> (t-datetime.datetime(1970,1,1)).total_seconds()
1256083200.0
The starting date is usually specified in UTC, so for proper results the datetime
you feed into this formula should be in UTC as well. If your datetime
isn't in UTC already, you'll need to convert it before you use it, or attach a tzinfo
class that has the proper offset.
As noted in the comments, if you have a tzinfo
attached to your datetime
then you'll need one on the starting date as well or the subtraction will fail; for the example above I would add tzinfo=pytz.utc
if using Python 2 or tzinfo=timezone.utc
if using Python 3.
In Python, how do you convert seconds since epoch to a `datetime` object?
datetime.datetime.fromtimestamp
will do, if you know the time zone, you could produce the same output as with time.gmtime
>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)
or
>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)
How can I convert a datetime object to milliseconds since epoch (unix time) in Python?
It appears to me that the simplest way to do this is
import datetime
epoch = datetime.datetime.utcfromtimestamp(0)
def unix_time_millis(dt):
return (dt - epoch).total_seconds() * 1000.0
How to convert date to datetime to seconds since UNIX epoch in R with lubridate?
This works with base R, now that we covered that you really want as.Date("1970-01-01")
.
R> as.POSIXct("1900-01-01 00:00:00")
[1] "1900-01-01 CST"
R> as.numeric(as.POSIXct("1900-01-01 00:00:00"))
[1] -2208967200
R>
I vaguely recall some OS-level irritations for dates prior to the epoch. This may fail for you on the world's most commonly used OS but that is not really R's fault...
Related Topics
Companyname.Foo' Is a 'Namespace' But Is Used Like a 'Type'
Directly Sending Keystrokes to Another Process via Hooking
Recommendation for C# Matrix Library
C# Iterate Through Class Properties
Password Encryption/Decryption Code in .Net
Photo Capture on Windows Store App for Windows Phone
How to Format Datetime to Web Utc Format
Learning Single Responsibility Principle with C#
Recommend a Library/API to Unzip File in C#
How to Get Xml Node from Xdocument
How to Make My Windows Form App Snap to Screen Edges
How to Create a C# App That Decides Itself Whether to Show as a Console or Windowed App
How to Mock Out a .Net Httpwebresponse
How to Get the Current Date Without the Time
How to Display a Windows Form in Full Screen on Top of the Taskbar
JSON Serialize Properties on Class Inheriting List