Carlos Brando

Nome do Jogo

Edge Rails: Mais TimeZone e Prototype

Você pensou que as alterações no TimeZone tinham acabado? Está enganado.

Prototype

Element#writeAttribute foi corrigido para trabalhar com cellspacing e cellpadding no Internet Explorer.

TimeZone

Os métodos in_current_time_zone e change_time_zone_to_current da classe Time foram alterados para retornarem self quando o Time.zone for nulo.

Além disso o método TimeZone#now também foi alterado para retornar um ActiveSupport::TimeWithZone representando a hora corrente no fuso horário configurado no Time.zone. Exemplo:

Time.zone = 'Hawaii'  # => "Hawaii"
Time.zone.now         # => Wed, 23 Jan 2008 20:24:27 HST -10:00

Também foi criado o método compare_with_coercion (com um alias para <=>) nas classes Time e DateTime, tornando possível realizar uma comparação cronológica entre as classes Time, DateTime e instâncias do ActiveSupport::TimeWithZone. Para entender melhor como funciona, veja os exemplos abaixo (o resultado de cada linha está no comentário logo depois do código):

Time.utc(2000) <=> Time.utc(1999, 12, 31, 23, 59, 59, 999) # 1
Time.utc(2000) <=> Time.utc(2000, 1, 1, 0, 0, 0) # 0
Time.utc(2000) <=> Time.utc(2000, 1, 1, 0, 0, 0, 001)) # -1

Time.utc(2000) <=> DateTime.civil(1999, 12, 31, 23, 59, 59) # 1
Time.utc(2000) <=> DateTime.civil(2000, 1, 1, 0, 0, 0) # 0
Time.utc(2000) <=> DateTime.civil(2000, 1, 1, 0, 0, 1)) # -1

Time.utc(2000) <=> ActiveSupport::TimeWithZone.new( Time.utc(1999, 12, 31, 23, 59, 59) ) # 1
Time.utc(2000) <=> ActiveSupport::TimeWithZone.new( Time.utc(2000, 1, 1, 0, 0, 0) ) # 0
Time.utc(2000) <=> ActiveSupport::TimeWithZone.new( Time.utc(2000, 1, 1, 0, 0, 1) )) # -1

Comments