0

我有下面的代码来获取日期<%= form.date_select :date %>并比较是否存在具有相同日期的任何帖子。

    # Get the date from form and format it to compare with db
    # date(1i)"=>"2021", "date(2i)"=>"3", "date(3i)"=>"22"
    @selected_date = Date.new(params["post"]["date(1i)"].to_i,
                              params["post"]["date(2i)"].to_i,
                              params["post"]["date(3i)"].to_i)

    # Check if the post exists in the db
    @existing_post = Post.where(user_id: current_user.id, date: @selected_date).first

这很好用。现在我需要对来自 email 的日期做同样的事情

@selected_date = mail.date.to_s

但是这个邮件日期的格式不同,与数据库中的日期比较总是失败。我不能使用["date(1i)"]with mail.date

如何格式化此 email.date 以便我可以将它的存在与数据库中的日期字段进行比较?

谢谢


更新: 我猜来自电子邮件的日期格式如下。查看服务器上的日志

日期:2021 年 3 月 24 日,星期三 09:57:57 +0000 在此处输入图像描述

我在数据库中的日期格式如下。在 Rails c 中输出 Post.last

日期:“2021-03-24 09:57:57.000000000 +0000 在此处输入图像描述

4

1 回答 1

0
  mail.date.to_time == date.to_time

如果上述语句不起作用,请尝试

  mail.date.to_s.to_time == date.to_s.to_time

如果您执行以下语句,您将得到正确答案,请在控制台中尝试

  "Wed, 24 Mar 2021 09:57:57 +0000".to_time == "2021-03-24 09:57:57.000000000 +0000".to_time
于 2021-03-25T06:45:18.803 回答