روبي تحويل طابع التاريخ إلى سنة في روبي [نسخة مكررة]

StackOverflow https://stackoverflow.com/questions/5986242

  •  12-11-2019
  •  | 
  •  

سؤال

التكرار المحتمل:
كيف تحسب عدد السنوات التي مرت منذ تاريخ معين في روبي؟

أحاول تحويل طابع التاريخ المأخوذ من قاعدة البيانات إلى قيمة تشير إلى عدد سنوات عمر الشخص.أنا متأكد من أن هذا الأمر سهل، لكن يبدو أنني لا أستطيع اكتشافه.

هل كانت مفيدة؟

المحلول

بافتراض أنه يتم استرداد طابع التاريخ كقيمة DateTime:

require 'date'

birth_date = DateTime.parse('1970-01-01 1:35 AM')
time_now = DateTime.now

(time_now - birth_date).to_i / 365 # => 41
(time_now - birth_date).to_f / 365 # => 41.38907504054664

birth_date هي قيمة وهمية لما يجب عليك استرجاعه من قاعدة البيانات الخاصة بك.القيمة الأولى هي سنوات، والثانية هي سنوات كسرية.

بدلا من ذلك، يمكنك القيام بذلك بهذه الطريقة:

years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 41

يتم ضبط هذا في حالة عدم عيد ميلاد الشخص بعد.على سبيل المثال، تعديل تاريخ الميلاد:

birth_date = DateTime.parse('1970-12-31 11:59 PM')
years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 40
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top