Rails Insights

Manipulating Time in Ruby

Mae Ruby yn iaith raglennu sy'n cynnig dulliau pwerus ar gyfer gweithredu gyda data amser. Mae'n hawdd i ddechreuwyr ddechrau gyda Ruby, ac un o'r pethau mwyaf defnyddiol y gallant ei wneud yw rheoli amser. Yn yr erthygl hon, byddwn yn archwilio sut i ddelio â phynciau fel creu amseroedd, cymharu amseroedd, a defnyddio'r gem 'ActiveSupport' i wella ein gallu i ddelio â phynciau amser. Byddwn hefyd yn cynnwys enghreifftiau o god i wneud y broses yn haws i ddeall.

Creu Amseroedd

Mae Ruby yn cynnig y dosbarth 'Time' sy'n caniatáu i ni greu a rheoli amseroedd yn hawdd. Gallwn greu amseroedd yn seiliedig ar y dyddiad a'r amser presennol neu ddefnyddio dyddiadau penodol. Dyma sut i wneud hynny:

# Creu amser presennol
current_time = Time.now
puts "Amser presennol: #{current_time}"

# Creu amser penodol
specific_time = Time.new(2023, 10, 1, 12, 0, 0)
puts "Amser penodol: #{specific_time}"

Yn y cod uchod, rydym yn defnyddio 'Time.now' i gael yr amser presennol, a 'Time.new' i greu amser penodol. Mae'r 'Time.new' yn derbyn blwyddyn, mis, diwrnod, awr, munud, a eiliad fel ei dderbyniadau.

Cymharu Amseroedd

Un o'r pethau pwysig y gallwn ei wneud gyda'r dosbarth 'Time' yw cymharu amseroedd. Gallwn wirio a yw amser penodol yn cynrychioli amser cyn neu ar ôl amser arall. Dyma sut i wneud hynny:

# Creu amseroedd
time1 = Time.new(2023, 10, 1, 12, 0, 0)
time2 = Time.new(2023, 10, 2, 12, 0, 0)

# Cymharu amseroedd
if time1 < time2
  puts "#{time1} yn cynrychioli amser cyn #{time2}"
elsif time1 > time2
  puts "#{time1} yn cynrychioli amser ar ôl #{time2}"
else
  puts "#{time1} a #{time2} yn yr un amser"
end

Yn y cod hwn, rydym yn creu dwy amser ac yna'n eu cymharu. Mae'r 'if' yn ein galluogi i wirio pa un sy'n cynrychioli amser cyn neu ar ôl y llall.

Defnyddio ActiveSupport

Mae ActiveSupport, sy'n rhan o'r gem Rails, yn cynnig llawer o ddulliau defnyddiol ar gyfer rheoli amser. Mae'n cynnig dulliau fel 'ago', 'from_now', a 'change' sy'n gwneud ein bywydau'n haws. Dyma enghraifft o sut i ddefnyddio ActiveSupport:

# Sicrhau bod ActiveSupport wedi'i fewnforio
require 'active_support/all'

# Creu amser presennol
current_time = Time.now

# Defnyddio ActiveSupport i ychwanegu amser
future_time = current_time + 1.day
puts "Amser yn y dyfodol: #{future_time}"

# Defnyddio ActiveSupport i dynnu amser
past_time = current_time - 1.week
puts "Amser yn y gorffennol: #{past_time}"

Yn y cod hwn, rydym yn defnyddio ActiveSupport i ychwanegu diwrnod a thynnu wythnos o'r amser presennol. Mae hyn yn gwneud ein bywydau'n haws gan nad oes angen i ni gyfrifo'r eiliadau yn ein hunain.

Ychwanegu a Thynnu Amser

Gallwn hefyd ychwanegu a thynnu amser yn hawdd gyda'r dosbarth 'Time'. Mae'n hawdd gwneud hyn gyda'r dulliau 'plus' a 'minus'. Dyma enghraifft:

# Creu amser presennol
current_time = Time.now

# Ychwanegu amser
added_time = current_time + (2 * 60 * 60) # Ychwanegu 2 awr
puts "Amser wedi'i ychwanegu: #{added_time}"

# Tynnu amser
subtracted_time = current_time - (30 * 60) # Tynnu 30 munud
puts "Amser wedi'i dynnu: #{subtracted_time}"

Yn y cod hwn, rydym yn ychwanegu 2 awr a thynnu 30 munud o'r amser presennol. Mae'n bwysig nodi bod angen i ni gyfrifo'r eiliadau yn ein hunain, gan fod Ruby yn derbyn amser yn eiliadau.

Fformatio Amser

Mae'n bwysig gallu fformatio amser yn gywir ar gyfer arddangos. Mae Ruby yn cynnig dull 'strftime' sy'n ein galluogi i fformatio amser yn seiliedig ar ein hanghenion. Dyma enghraifft:

# Creu amser presennol
current_time = Time.now

# Fformatio amser
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
puts "Amser fformatiedig: #{formatted_time}"

Yn y cod hwn, rydym yn defnyddio 'strftime' i fformatio'r amser presennol i'r fformat "blwyddyn-mis-diwrnod awr:myned". Mae'r dull hwn yn hynod ddefnyddiol pan fydd angen i ni ddangos amser mewn fformat penodol.

Amseroedd a Dyddiadau

Mae'n bwysig deall y gwahaniaeth rhwng amseroedd a dyddiadau. Mae Ruby hefyd yn cynnig y dosbarth 'Date' sy'n caniatáu i ni ddelio â dyddiadau heb yr amser. Dyma enghraifft:

# Mewngofnodi'r dosbarth Date
require 'date'

# Creu dyddiad
date = Date.new(2023, 10, 1)
puts "Dyddiad: #{date}"

# Ychwanegu diwrnod
new_date = date + 10
puts "Dyddiad wedi'i ychwanegu: #{new_date}"

Yn y cod hwn, rydym yn creu dyddiad a'i ychwanegu 10 diwrnod. Mae'r dosbarth 'Date' yn caniatáu i ni ddelio â dyddiadau heb y cymhlethdodau sy'n gysylltiedig â'r amser.

Casgliad

Mae Ruby yn cynnig dulliau pwerus ar gyfer rheoli amser a dyddiadau. O greu amseroedd a dyddiadau, cymharu amseroedd, a defnyddio ActiveSupport, mae'n hawdd i unrhyw un ddechrau gyda'r pynciau hyn. Mae'r enghreifftiau a'r dulliau a drafodwyd yn yr erthygl hon yn cynnig sylfaen gadarn ar gyfer dechrau gweithio gyda'r amser yn Ruby. Mae'n bwysig ymarfer a phrofi'r dulliau hyn i ddod yn gyfarwydd â nhw. Gobeithio y byddwch yn mwynhau'r broses o ddysgu am ddelio â'r amser yn Ruby!

Published: August 12, 2024

© 2024 RailsInsights. All rights reserved.