روبي تحويل طابع التاريخ إلى سنة في روبي [نسخة مكررة]
سؤال
التكرار المحتمل:
كيف تحسب عدد السنوات التي مرت منذ تاريخ معين في روبي؟
أحاول تحويل طابع التاريخ المأخوذ من قاعدة البيانات إلى قيمة تشير إلى عدد سنوات عمر الشخص.أنا متأكد من أن هذا الأمر سهل، لكن يبدو أنني لا أستطيع اكتشافه.
المحلول
بافتراض أنه يتم استرداد طابع التاريخ كقيمة 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
لا تنتمي إلى StackOverflow