datetime

Discussion in 'Python' started by Max, Sep 13, 2012.

  1. Max

    Max Guest

    How do I set the time in Python?

    Also, is there any *direct* way to shift it?

    Say, it's 09:00 now and Python makes it 11:30 *without* me having specified
    "11:30" but only given Python the 2h30m interval.

    Note that any "indirect" methods may need complicated ways to keep
    track of the milliseconds lost while running them. It even took around one
    second in some virtual machine guest systems. So I'm hoping Python happens to
    have the magic needed to do the job for me.
    Max, Sep 13, 2012
    #1
    1. Advertising

  2. On Thu, 13 Sep 2012 15:19:32 +0000, Max wrote:

    > How do I set the time in Python?


    You don't. You ask the operating system to set the time. If you don't
    have permission to change the time, which regular users shouldn't have
    because it is a security threat, it will (rightly) fail. E.g.:

    import os
    os.system('date -s %s' % date_str)

    In Python 3.3 there is a wrapper in the time module that allows you to
    set the clock without an explicit system call. Again, you need permission
    to set the clock, or it will fail.


    > Also, is there any *direct* way to shift it?
    >
    > Say, it's 09:00 now and Python makes it 11:30 *without* me having
    > specified "11:30" but only given Python the 2h30m interval.


    Certainly. Just call:

    time.sleep(2*60**2 + 30*60)

    and when it returns, the clock will have shifted forward by 2h30m, just
    like magic!

    *wink*



    > Note that any "indirect" methods may need complicated ways to keep track
    > of the milliseconds lost while running them. It even took around one
    > second in some virtual machine guest systems. So I'm hoping Python
    > happens to have the magic needed to do the job for me.


    No. Setting the clock is not the business of any user-space application.
    It is the job of the operating system, which will do it the right way. At
    most, the application can call the OS, directly or indirectly, but it has
    no control over how many milliseconds are lost when you do so.

    On Linux, Unix or Mac, that right way is to use NTP, which will keep your
    computer's clock syncronised with a trusted external source. In a virtual
    machine, the right way is to use NTP to syncronise the VM host's time,
    and then tell the host to synchronise itself with the VM. On Windows,
    well you'll have to ask a Windows expert.

    If you want to bypass NTP and manage time yourself -- say, you want to
    simulate "what happens when the clock strikes midnight?" without having
    to wait for midnight -- then you probably don't need millisecond
    precision. If you do need millisecond precision -- why??? -- *and* expect
    to do it from a user-space application, you're going to have a bad time.



    --
    Steven
    Steven D'Aprano, Sep 14, 2012
    #2
    1. Advertising

  3. On 14 Sep 2012 03:35:29 GMT, Steven D'Aprano
    <> declaimed the following in
    gmane.comp.python.general:

    >
    > On Linux, Unix or Mac, that right way is to use NTP, which will keep your
    > computer's clock syncronised with a trusted external source. In a virtual
    > machine, the right way is to use NTP to syncronise the VM host's time,
    > and then tell the host to synchronise itself with the VM. On Windows,
    > well you'll have to ask a Windows expert.
    >

    WinXP -- and I'd presume anything later -- can be configured for NTP
    time server; synching tends to be on a weekly basis as I recall. Though
    I hadn't checked my system in some time and the configuration may not be
    valid after having moved 2000 miles and changed routers...
    --
    Wulfraed Dennis Lee Bieber AF6VN
    HTTP://wlfraed.home.netcom.com/
    Dennis Lee Bieber, Sep 14, 2012
    #3
  4. On Fri, 14 Sep 2012 00:50:03 -0400, Dennis Lee Bieber
    <> declaimed the following in
    gmane.comp.python.general:

    > WinXP -- and I'd presume anything later -- can be configured for NTP
    > time server; synching tends to be on a weekly basis as I recall. Though
    > I hadn't checked my system in some time and the configuration may not be
    > valid after having moved 2000 miles and changed routers...


    Confusingly:

    If the system is part of Windows "domain", it synchronizes to a
    domain server; otherwise,

    If the system is stand-alone workstation/laptop/etc. with internet
    connectivity, it will synchronize (by default) to a Microsoft time
    server, but can be switched to other servers. Opening the clock (from
    the taskbar) should show an "internet time" tab which (admin) can be set
    to the server, set for automatic sync, and forced to update.

    The confusion: my old WinXP Inside & Out says only XP Pro has it;
    but my XP Home laptop shows it -- perhaps it was an update in one of the
    service packs.

    Some documentation implies it uses just SNTP, but other
    documentation claims full NTP (depending on OS version)

    NO obvious means to configure w32tm to sync more often than weekly,
    it is documented to not be useful for time-critical networks -- it
    exists to permit Kerberos to function.
    --
    Wulfraed Dennis Lee Bieber AF6VN
    HTTP://wlfraed.home.netcom.com/
    Dennis Lee Bieber, Sep 14, 2012
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Christos TZOTZIOY Georgiou
    Replies:
    3
    Views:
    677
    Christos TZOTZIOY Georgiou
    Sep 13, 2003
  2. Tim Peters
    Replies:
    0
    Views:
    513
    Tim Peters
    Sep 9, 2003
  3. mp
    Replies:
    1
    Views:
    368
    John Machin
    Jul 28, 2006
  4. Martin
    Replies:
    0
    Views:
    318
    Martin
    Dec 27, 2008
  5. Replies:
    2
    Views:
    736
    M.-A. Lemburg
    Jan 6, 2009
Loading...

Share This Page