如何使该月的日期按照每天打印(例如:Su Mo Tu We...等)?

2024-04-30

我有一个包含数字 1-31 的大字符串。我怎样才能将月份的名称居中?

My code:

class Month

  attr_reader :month, :year

  def initialize( month, year) 
   @month = month
   @year = year
  end

  def month_names

   names_of_months = {1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December'}
   return names_of_months[@month]
  end

  def length
   days_of_months  = {1 => 31, 2 => 28, 3 => 31, 4 => 30, 5 => 31, 6 => 30, 7 => 31, 8 => 31, 9 => 30, 10 => 31, 11 => 30, 12 => 31}

   return days_of_months[@month]
  end


 def to_s

  output = "#{month_names} #{year}\nSu Mo Tu We Th Fr Sa\n"
   (1..length).each do |day|
   output << day.to_s
  end
  output
 end
end

终端状态:

Failure:
TestMonth#test_to_s_on_jan_2017 [test/test_month.rb:39]
Minitest::Assertion: --- expected

+++ actual

@@ -1,9 +1,3 @@

       -"January 2017

+"January 2017

 Su Mo Tu We Th Fr Sa
- 1  2  3  4  5  6  7
- 8  9 10 11 12 13 14
-15 16 17 18 19 20 21

-22 23 24 25 26 27 28

-29 30 31
-
-"
+12345678910111213141516171819202122232425262728293031"

Ruby 中的 String 类有一个center http://ruby-doc.org/core-2.2.0/String.html#method-i-center method:

weekdays = "Su Mo Tu We Th Fr Sa"
month    = "#{month_names} #{year}"

output   = [
  month.center(weekdays.size), 
  weekdays
].join("\n")

puts output
#      April 2015     
# Su Mo Tu We Th Fr Sa

以下内容并不能真正回答你的问题。这只是对你的代码的完全重写,因为我很无聊:

require 'date'

class Month
  attr_reader :month, :year

  def initialize(month, year)
    @month = month
    @year  = year
  end

  def first_of_month
    Date.new(year, month, 1)
  end

  def last_of_month
    Date.new(year, month, -1)
  end

  def month_name
    last_of_month.strftime('%B')
  end

  def days_in_month
    last_of_month.day
  end

  def to_s
    [].tap do |out|
      out << header
      out << weekdays

      grouped_days.each do |days|
        out << days.map { |day| day.to_s.rjust(2) }.join(' ')
      end
    end.join("\n")
  end

private
  def header
    "#{month_name} #{year}".center(weekdays.size)
  end

  def weekdays
    'Su Mo Tu We Th Fr Sa'
  end

  def grouped_days
    days = (1..days_in_month).to_a
    first_of_month.wday.times { days.unshift(nil) }
    days.each_slice(7)
  end
end

Month.new(4, 2015).to_s
#      April 2015     
# Su Mo Tu We Th Fr Sa
#           1  2  3  4
#  5  6  7  8  9 10 11
# 12 13 14 15 16 17 18
# 19 20 21 22 23 24 25
# 26 27 28 29 30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使该月的日期按照每天打印(例如:Su Mo Tu We...等)? 的相关文章

  • 使用 attr_accessor 动态创建类属性

    在Ruby中 有没有办法动态地将实例变量添加到类中 例如 class MyClass def initialize create attribute name end def create attribute name attr acces
  • “rmagick”gem 安装问题

    我在尝试在 centos 上安装 rmagick gem 时遇到问题 以下是我得到的输出 谁能帮我识别一下我缺少什么包裹 我已经安装了所有提到的另一个堆栈溢出线程 RMagick安装错误 https stackoverflow com qu
  • REXML - 如何提取单个元素

    我正在用 ruby 编写一些验收测试 其中涉及断言响应 XML 中值的存在 我的 XML 是这样的
  • 已定义方法的 Ruby 钩子?

    我一直在谷歌上搜索这个问题 但找不到答案 这让我认为答案是否定的 但我想我会在这里问 以防有人确切知道 Ruby 是否有一个钩子来定义方法 即在模块或类上 如果没有 是否有人足够熟悉该实施的情况main对象以了解它到底如何将方法复制到Obj
  • 用户未定义的方法 attr_accessible 错误

    我正在尝试创建某种登录 我创建了一个用户脚手架并将此代码放在我的 user rb 中 class User lt ActiveRecord Base attr accessible name password digest password
  • Ruby require 'file' 不起作用,但 require './file' 可以。为什么?

    我有一个充满 ruby 文件的文件夹 当我尝试使用位于同一目录中的另一个文件中的一个文件时require file 我得到一个LoadError但是当我使用require file 一切正常 有人可以向我解释为什么会发生这种情况吗 如果有什
  • 我无法让 ruby​​ 开发工具包适用于 Windows XP

    所以 我一生都无法让它正常工作 我的最终目标是安装 dbd odbc gem 并使其正常工作 从我读过的多篇文章来看 我需要安装ODBC 绑定 http www ch werner de rubyodbc 对于 ruby 以及 dbd od
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • ruby 正则表达式匹配模式的多次出现

    我正在寻找构建一个 ruby 正则表达式来匹配模式的多次出现并将它们返回到数组中 模式很简单 即 两个左括号 一个或多个字符 后跟两个右括号 这就是我所做的 str Some random text lead first name and
  • 使用哈希参数进行 DRY Ruby 初始化

    我发现自己经常在构造函数中使用哈希参数 尤其是在为配置或最终用户将接触到的其他 API 编写 DSL 时 我最终做的是类似以下的事情 class Example PROPERTIES name age PROPERTIES each p a
  • 在 Sinatra 中运行后台进程

    我有 Sinatra Rails 应用程序和一个启动一些漫长过程的操作 通常我会为后台作业排队 但这种情况太简单了 后台进程很少启动 所以队列是一个开销 那么如何在没有队列的情况下运行后台进程呢 get build logs project
  • ruby 认为我正在引用顶级常量,即使我指定了完整的命名空间

    在我的应用程序中我有 class User include User Foo end User Foo定义在 app models user foo rb 中 现在我正在使用一个定义自己的库Foo班级 我收到此错误 警告 User Foo
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 如何在不初始化Rails的情况下从schema.rb创建数据库?

    我正在尝试从 schema rb 创建所有表 我使用命令 rake db schema load 但是 这失败了 因为在我的一个初始化程序中 它引用了一个显然不存在的模型 表 因为数据库为空 我可以注释掉这些行 然后再次运行 schema
  • Ruby:如何在不创建新实例的情况下检查实例方法的参数?

    在 Ruby 1 9 2 中 您可以使用 method symbol 检查任何方法的参数 如何在不创建新车的情况下检查 Car initialize 方法 class Car def initialize fuel type passeng
  • 从 Ruby on Rails 应用程序运行 phantomjs

    我有兴趣使用幻影 http www phantomjs org 我想从我的 Ruby on Rails 应用程序运行它 然而 这是一个命令行工具 即我需要运行类似phantomjs rasterize js http raphaeljs c
  • Rails 6:每个用户只能创建一个配置文件

    我目前正在开发 Rails 6 应用程序 我有以下关联 用户有一个配置文件 并且配置文件属于用户 当编辑用户的配置文件时 我最终为该用户提供了两个配置文件 我希望每个用户只有一份个人资料 编辑表单 profile edit html erb
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • 使用 IntlDateFormatter 转换非公历日期

    我应该如何使用将非公历日期转换为其他日历类型IntlDateFormatter 我要转换 1392 01 02 from persian to islamic日历 我尝试了以下代码 但它没有转换日历 formatter IntlDateFo
  • 比较 ruby​​ 中的两个字符串[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我刚刚开始学习 ruby 这可能很容

随机推荐

  • Firebase 云功能 - Stripe Connect Webhook 未触发

    我正在尝试设置我的 stripe webhook 以便在创建 更新 Stripe Connect 帐户或执行任何操作时自动调用 Firebase 云函数 仅当我手动转到 Stripe 仪表板 gt Webhooks 并点击 发送测试 Web
  • 在给定时间后停止 java 中的线程 - 不起作用

    我有一个复杂的函数 优化 可能会进入循环或只是花费太多时间 并且允许的时间由用户设置 因此 我试图在单独的线程中运行该函数 并在超过最大时间时停止它 我使用类似于下面的代码 但它不起作用 所以 int timeMax 2 time in m
  • 如何处理WPF中Grid Splitter生成的事件?

    我想要一个事件处理程序来处理移动网格拆分器时的事件 我不确定是否有一个 如果没有 我想我可以在行大小更改时生成一个事件 Thanks 您可以更改行的大小 但 GridSplitter 本身是一个 Thumb 因此有自己的事件 例如 Drag
  • 数据库索引:是好事、坏事还是浪费时间?

    这里通常建议添加索引作为性能问题的补救措施 我只讨论读取和查询 我们都知道索引会使写入速度变慢 多年来 我在 DB2 和 MSSQL 上多次尝试过这种补救措施 但结果总是令人失望 我的发现是 无论索引会让事情变得更好是多么 明显 事实证明查
  • glutPostRedisplay 不在循环内工作

    我试图让一个人在 y 轴上跳跃 所以我使用 2 秒的循环 第一秒它应该向下移动并弯曲膝盖 第二秒它应该向上移动 然后在起始位置完成 现在我刚刚开始让这个人在第一秒内跪下并弯曲膝盖 我还没有编写动画的其余部分 问题是 glutPostRedi
  • 带有反应导航的自定义图标 5

    我正在尝试将自定义图标与反应选项卡导航一起使用 但是 所有教程和文档 总是只涵盖通过 Ionicons 或 Materialdesign 实现图标 有没有办法实现我自己的图标 代码如下
  • 使用 const shared_ptr<> 的基于范围的 for 循环

    我有一个容器shared ptr lt gt 例如Avector
  • 如何将 DateTime 转换为自 1970 年以来的秒数?

    我正在尝试将 C DateTime 变量转换为 Unix 时间 即自 1970 年 1 月 1 日以来的秒数 看起来 DateTime 实际上是作为自 0001 年 1 月 1 日以来的 刻度 数来实现的 我目前的想法是从我的 DateTi
  • 使用虚假数据生成回形针图像上传 - Ruby on Rails Populator / Faker Gems

    我目前正在尝试用一堆假数据填充项目的开发数据库 以模拟数百篇文章 用户的外观和操作方式 我研究了不同的宝石来完成任务 例如 Factory Girl 但文档非常缺乏 我没有得到它 但最终使用了 Populator 和 Faker gems
  • php 登录curl 代码未按预期工作

    我正在尝试使用 php 中的curl 函数登录到特定页面 请检查下面的代码 我在 banggood com 连接我的电子邮件和密码 然后我想重定向到另一个私人页面 但它无法按预期工作 我没有收到任何错误 我被重定向到此页面 https ww
  • 如何将一个数表示为4个素数之和?

    这是问题所在 四个素数的和 http acm uva es p v101 10168 html 指出 输入的每一行包含一个整数 N N 输入示例 24 36 46 示例输出 3 11 3 73 7 13 1311 11 17 7 我第一眼就
  • 为什么更新的状态没有反映在事件侦听器中:React Native、Hooks

    我正在使用钩子来更新状态 在我的代码中 我有一个 AppState 事件侦听器 每当它触发时 我都会更新appState using 设置应用程序状态 但是事件监听器内的 appState 没有改变 但该值正在侦听器外部更新 谁能解释为什么
  • 快速会话未保存到 iPad

    我试图在用户登录时保存会话变量 这在计算机上有效 但是当我在电脑上尝试时iPad using Safari or Chrome它不会保存 这是我设置会话的地方 app set trust proxy 1 app use session se
  • 如何在 Eclipse 中使用 ssh 隧道设置 Subversion?

    我有一个远程服务器 在非标准 ssh 端口上托管我的 subversion 存储库 我想使用 Eclipse 的 subclipse 插件作为客户端来访问 SVN 存储库 我可以使用 svn specialssh 来访问存储库 其中spec
  • FBSessionDelegate 方法未触发

    我正在尝试实施最新的 Facebook Connect SDK 但遇到了一些麻烦 由于某种原因 委托回调FBSessionDelegate协议没有被解雇 我已按照 git Facebook 页面上的说明进行操作 并尝试模仿 Facebook
  • 为什么Jboss比Tomcat“更好”? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在开始一个新的应用程序开发 应用程序架构师坚持要求我们使用JBoss5因为它 更好 有谁对 更好 有更广泛的定义 如果是这样的话 我有使
  • 使用 AJAX (jQuery) 加载日期在 div 内无限滚动

    我一直试图通过几个问题来解决这个问题 找出不同的部件 然后组装它们 但现在我放弃了 我正在尝试做的事情 用户在页面上单击按钮 然后使用 jQuery ajax 将内容列表加载到 div 中 当他或她滚动到 div 底部时 加载更多内容 正如
  • QOpenGLFunctions 缺少重要的 OpenGL 函数

    QOpenGLFunctions 似乎缺少重要的函数 例如 glInvalidateFramebuffer 和 glMapBuffer 据我了解 QOpenGLFunctions 加载桌面 OpenGL 函数和 ES 函数的交集 如果是这样
  • 在 R 中的异常处理中赋值

    while bo 10 x tryCatch getURLContent Site verbose F curl handle error function e cat ERROR1 e message n Sys sleep 1 prin
  • 如何使该月的日期按照每天打印(例如:Su Mo Tu We...等)?

    我有一个包含数字 1 31 的大字符串 我怎样才能将月份的名称居中 My code class Month attr reader month year def initialize month year month month year