在C#中有一个TimeSpan类.它表示一段时间,并从许多日期操作选项返回.您可以创建一个并添加或减去日期等.
在Ruby和特定的rails中,似乎有很多日期和时间类,但没有代表一段时间的东西?
理想情况下,我喜欢使用标准日期格式选项轻松输出格式化日期的对象.
例如.
ts.to_format("%H%M")
Run Code Online (Sandbox Code Playgroud)
有这样的课吗?
如果我可以做类似的事情,那就更好了
ts = end_date - start_date
Run Code Online (Sandbox Code Playgroud)
我知道减去两个日期会导致分隔所述日期的秒数,并且我可以从中完成所有日期.
我正在修改一个全球化的Web应用程序,它为每个登录用户使用存储的CultureInfo.
客户希望时间数据输入被本地化.显示不是问题,因为格式化已经可用.但是我需要检测当前cultureinfo是24小时还是上午/下午所以我可以显示正确的输入框(而不仅仅是文本字段).
我最初的想法是检查CultureInfo的DateTimeInfo属性,看看ShortTimePattern是否包含大写H或小写h,但这对我来说不够强大.
有没有更好的办法?我已经阅读了两者的类属性,但除非我遗漏了什么,否则我看不到任何现有的方法或属性.
我正在构建一个多语言,多时间和n层的应用程序.所有日期都以UTC格式存储在数据库中,所有模型对象都以UTC时间填充.但是,从不显示UTC时间(除非用户恰好将其时区设置为UTC).
这意味着我需要重复地将时间属性转换为正确的用户时区.重复始终是糟糕代码的标志或更好的方式,所以我试图找出最佳策略来实现.虽然这是有效的表示逻辑,但我的想法已经变化,因为模型似乎应该知道当前用户的正确值.到目前为止,我的想法是:
使用静态助手类,然后在每次使用模型的属性时调用它.这似乎容易出错或被遗忘,使得计算变得繁琐.
将模型对象包装在viewmodel对象中.这同样很麻烦,尤其是在处理对象列表时.
为仅存在于表示层中的模型编写扩展方法.这看起来更干净但不直观.
在模型层中为转换创建一个接口.在表示层中实现帮助程序,并为模型层提供实现.然后,模型具有使用接口转换时间的属性.这似乎应该打破关注点的分离,但似乎并没有.如果您有一个默认转换器,那么您不必担心获取空对象异常,但是模型层(当前为POCO)需要一个转换助手的容器,这似乎很麻烦.
在模型上创建转换为本地时区方法并传入当前时区.
我对这些策略或任何其他我应该或可能用来代替这些策略的意见感兴趣.
更新 我目前所做的是在模型层中创建ITimeConvertor和ITimeConvertorFactory.然后我创建了这些的默认实现,只返回原始日期值.在模型层中,我为最初在模型上的每个现有UTC属性添加了本地时间属性.在这些属性中,我使用工厂来获取转换器并在getter和setter中以每种方式转换UTC值.我必须在模型层(我不太喜欢)中添加一个静态设置类作为存储当前timeconvertor工厂的地方.在Web应用程序部分中,我将ITimeConvertorFactory和ITimeConvertor实现为WebTimeConvertorFactory和WebTimeConvertor.WebTimeConvertor知道会话和当前用户,因此可以获取当前时区.WebTimeConvertorFactory创建WebTimeConvertors.当应用程序启动时(global.asax中的application_onstart)我创建工厂并将其传递给模型层静态设置属性.这允许我的模型层能够转换本地时间,而数据层只知道UTC日期属性.这也意味着我可以将本地时间直接传递到模型中并准确转换,前提是消费应用程序已经提供了转换器工厂.由于UTC属性未更改,它们仍可在应用程序内的任何位置使用.虽然它看起来像很多代码,但我发现这个解决方案一旦实现就相当干净,因为它允许服务的其他消费者无论如何都要实现他们的时间转换(如果有的话),同时合理地保持模型属性的消耗明显.
我仍然愿意接受更好的解决方案并批评我目前的解决方案.
我是NHibernate的新手,到目前为止一切都进展顺利,但我遇到了一个问题,我不确定如何解决问题.基本上我需要通过用户定义函数的输出进行过滤.如果我是用SQL编写的,这就是我写的:
declare @Latitude decimal
declare @Longitude decimal
declare @radius int
set @Latitude = -118.4104684
set @Longitude = 34.1030032
select *
from store
where dbo.CalculateDistance([Latitude], [Longitude], @Latitude, @Longitude) < @radius
Run Code Online (Sandbox Code Playgroud)
我已经看到了我认为不合适的公式属性,命名查询和创建自己的方言扩展的例子(这看起来有点过分了).我原本以为有更直接的方式去做,但我似乎无法找到一个整洁的例子.
我正在使用 AngularJS 和 Bootstrap 构建一个应用程序。页面结构相当普通,有一个带导航的页眉区域、一个内容部分和一个页脚。我试图让页脚显示在内容区域的底部,如果内容区域的高度小于浏览器窗口的高度,则页脚显示在浏览器窗口的底部。
这个方法在这里很有效。
然而,作为 Angular 应用程序,内容是动态生成的,并且通常比浏览器窗口高度长。在这种情况下,页脚位于浏览器窗口的底部,位于动态生成的内容的顶部。我需要让页脚在动态生成的内容之后显示。理想情况下,这应该仅使用 CSS 来完成,但我也对 JS 解决方案持开放态度。
有什么指点吗?
非常感谢。
angular ×1
architecture ×1
c# ×1
cultureinfo ×1
nhibernate ×1
ruby ×1
timespan ×1
timezone ×1
typescript ×1