ISO with timezone

N

nik

Hi,

How does one express the time in ISO format with the timezone
designator?

what I want is YYYY-MM-DDThh:mm:ss.sTZD

From the documentation I see:.... def utcoffset(self, dt): return timedelta(minutes=-399)
....'2002-12-25 00:00:00-06:39'

and I've also figured out:
datetime.datetime.fromtimestamp(time.time()).isoformat()[:-3]
'2008-01-23T11:22:54.130'

But can't figure out how to fit them together.

Thank you,
Nik
 
N

Nicholas F. Fabry

Hello, nik.

Hi,

How does one express the time in ISO format with the timezone
designator?

what I want is YYYY-MM-DDThh:mm:ss.sTZD
From the documentation I see:
... def utcoffset(self, dt): return timedelta(minutes=-399)
...'2002-12-25 00:00:00-06:39'

and I've also figured out:
datetime.datetime.fromtimestamp(time.time()).isoformat()[:-3]
'2008-01-23T11:22:54.130'

But can't figure out how to fit them together.

There is nothing there to 'fit together' - in the first example given,
the datetime object has no time component specified, so it fills in
default vaules of zero. The following should make this clear:
2008-02-29T15:30:11-05:00

If you wish to append the NAME of the tzinfo object instead of its
offset, that requires a bit more playing around (along with a properly
defined tzinfo object - check out dateutil or pytz for a concrete
implementation of tzinfo subclasses (i.e. timezones)), but the
following would work:
2008-02-29T15:30:11 EST

For details on how the .strftime method works, see Python Standard
Library, Section 14.2.

I hope this helps!

Nick Fabry
 
N

nik

Thanks,
that does help and now I have:
.... def utcoffset(self,dt): return timedelta(seconds=time.timezone)
....2008-02-29T15:30:11+8:00


But what I want to know now it how to get the actual time into the
expression instead of typing the 2008,2,29,15....
So something like: >>> print
datetime(time.gmtime(),tzinfo=TZ()).isoformat(), but that doesn't
work.

I realize that I could do:
t = time.gmtime()
print datetime(t[0],t[1],t[2],t[3],t[4],t[5],tzinfo=TZ()).isoformat()

but I imagine there might be a cleaner way of doing this.

Thanks,
Nik


Hello, nik.

How does one express the time in ISO format with the timezone
designator?
what I want is YYYY-MM-DDThh:mm:ss.sTZD
... def utcoffset(self, dt): return timedelta(minutes=-399)
...
'2002-12-25 00:00:00-06:39'
and I've also figured out:
datetime.datetime.fromtimestamp(time.time()).isoformat()[:-3] '2008-01-23T11:22:54.130'

But can't figure out how to fit them together.

There is nothing there to 'fit together' - in the first example given,
the datetime object has no time component specified, so it fills in
default vaules of zero. The following should make this clear:
2008-02-29T15:30:11-05:00

If you wish to append the NAME of the tzinfo object instead of its
offset, that requires a bit more playing around (along with a properly
defined tzinfo object - check out dateutil or pytz for a concrete
implementation of tzinfo subclasses (i.e. timezones)), but the
following would work:
2008-02-29T15:30:11 EST

For details on how the .strftime method works, see Python Standard
Library, Section 14.2.

I hope this helps!

Nick Fabry
Thank you,
Nik
 
N

nik

Thanks,
that does help and now I have:

... def utcoffset(self,dt): return timedelta(seconds=time.timezone)
...>>> print datetime(2008,2,29,15,30,11,tzinfo=TZ()).isoformat()

2008-02-29T15:30:11+8:00

But what I want to know now it how to get the actual time into the
expression instead of typing the 2008,2,29,15....
So something like: >>> print
datetime(time.gmtime(),tzinfo=TZ()).isoformat(), but that doesn't
work.

I realize that I could do:
t = time.localtime()
print datetime(t[0],t[1],t[2],t[3],t[4],t[5],tzinfo=TZ()).isoformat()

but I imagine there might be a cleaner way of doing this.

Thanks,
Nik

Hello, nik.
On Jan 28, 2008, at 21:03, nik wrote:
Hi,
How does one express the time in ISO format with the timezone
designator?
what I want is YYYY-MM-DDThh:mm:ss.sTZD
From the documentation I see:
from datetime import tzinfo, timedelta, datetime
class TZ(tzinfo):
... def utcoffset(self, dt): return timedelta(minutes=-399)
...
datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'
and I've also figured out:
datetime.datetime.fromtimestamp(time.time()).isoformat()[:-3]
'2008-01-23T11:22:54.130'
But can't figure out how to fit them together.
There is nothing there to 'fit together' - in the first example given,
the datetime object has no time component specified, so it fills in
default vaules of zero. The following should make this clear:

If you wish to append the NAME of the tzinfo object instead of its
offset, that requires a bit more playing around (along with a properly
defined tzinfo object - check out dateutil or pytz for a concrete
implementation of tzinfo subclasses (i.e. timezones)), but the
following would work:
2008-02-29T15:30:11 EST
For details on how the .strftime method works, see Python Standard
Library, Section 14.2.
I hope this helps!
Nick Fabry
 
G

Gabriel Genellina

2008-02-29T15:30:11+8:00

But what I want to know now it how to get the actual time into the
expression instead of typing the 2008,2,29,15....
So something like: >>> print
datetime(time.gmtime(),tzinfo=TZ()).isoformat(), but that doesn't
work.

Are you looking for datetime.now()?
 
N

Nicholas F. Fabry

Thanks,
that does help and now I have:
... def utcoffset(self,dt): return timedelta(seconds=time.timezone)
...2008-02-29T15:30:11+8:00


But what I want to know now it how to get the actual time into the
expression instead of typing the 2008,2,29,15....
So something like: >>> print
datetime(time.gmtime(),tzinfo=TZ()).isoformat(), but that doesn't
work.

I realize that I could do:
t = time.gmtime()
print
datetime(t[0],t[1],t[2],t[3],t[4],t[5],tzinfo=TZ()).isoformat()

but I imagine there might be a cleaner way of doing this.

Thanks,
Nik

No need for the ugliness! The constructor for class datetime has a
method, .now() that returns the current date and time, as a naive
datetime object (i.e. no tzinfo attached). Since you want an aware
datetime object (one with a tzinfo object attached), you can do it
simply by feeding .now the tzinfo object you want attached, as below:
2008-01-29T23:43:16.809049-05:00

See PSL, Sect. 5.1.4

Dates and Times are a bit ugly in Python. Don't be discouraged, but
you do need to understand them quite well to get bug-free code that
plays with them.

Nick Fabry



Hello, nik.

How does one express the time in ISO format with the timezone
designator?
what I want is YYYY-MM-DDThh:mm:ss.sTZD
From the documentation I see:
from datetime import tzinfo, timedelta, datetime
class TZ(tzinfo):
... def utcoffset(self, dt): return timedelta(minutes=-399)
...
datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'
and I've also figured out:
datetime.datetime.fromtimestamp(time.time()).isoformat()[:-3]
'2008-01-23T11:22:54.130'
But can't figure out how to fit them together.

There is nothing there to 'fit together' - in the first example
given,
the datetime object has no time component specified, so it fills in
default vaules of zero. The following should make this clear:
your_time = datetime(2008, 2, 29, 15, 30, 11, tzinfo=TZ())
print your_time 2008-02-29 15:30:11-05:00
print your_time.isoformat('T')
2008-02-29T15:30:11-05:00

If you wish to append the NAME of the tzinfo object instead of its
offset, that requires a bit more playing around (along with a
properly
defined tzinfo object - check out dateutil or pytz for a concrete
implementation of tzinfo subclasses (i.e. timezones)), but the
following would work:
print your_time.strftime('%Y-%m-%dT%H:%M:%S %Z')
2008-02-29T15:30:11 EST

For details on how the .strftime method works, see Python Standard
Library, Section 14.2.

I hope this helps!

Nick Fabry
Thank you,
Nik
 
B

Ben Finney

Nicholas F. Fabry said:
The constructor for class datetime has a method, .now() that returns
the current date and time, as a naive datetime object (i.e. no
tzinfo attached).

It's not "the constructor for class 'datetime'" that has that method;
rather, the class 'datetime' has that method.

(If anything is "the constructor for class 'datetime'", it's the
'__new__' method -- or, some might argue, the '__init__' method -- and
that doesn't fit what you say above.)
Dates and Times are a bit ugly in Python. Don't be discouraged, but
you do need to understand them quite well to get bug-free code that
plays with them.

This is unfortunately true. Native datetime support is improving, but
slowly.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top