开发者

Still confused about Timezone and conversions

I collect user time zone and a time they want something delivered in that time zone.

My application is set to use B开发者_如何学JAVAangkok Time.

application.rb

 config.time_zone = 'Bangkok'  

I want to store the time the user has entered relative to my timezone.

So say for example the user selects the following:

time = "6:00"
timezone = "(GMT-10:00) Hawaii"

I want to convert this time to the time of my application and save it in the database.

How can I convert from 6AM Hawaii time zone to what time this is in Bangkok?


Let us use your example to demonstrate:

config.time_zone = 'Bangkok'
time = "6:00"
timezone = "Hawaii"

The first thing you need to do is set the timezone of your app to the timezone that the user picked:

Time.zone = "Hawaii"

You then use the this new time zone to parse time time:

hawaii_time = Time.zone.parse("6:00")

If we now print out hawaii_time we get something similar to (we have HST -10:00 which means it is correct):

Mon, 15 Aug 2011 06:00:00 HST -10:00

You now use the rails in_time_zone method to convert to your app's timezone:

local_time = hawaii_time.in_time_zone(Rails.configuration.time_zone)

If we print out local_time we'll get something similar to (we have ICT +07:00 which is correct for Bangkok):

Mon, 15 Aug 2011 23:00:00 ICT +07:00

We can now reset the timezone of our app back to its original value:

Time.zone = Rails.configuration.time_zone
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜