可能重复:
如何计算相对时间?
有没有类似于rails的'time_ago_in_words助手为asp.net MVC?
可能重复:
如何计算相对时间?
我想在我的社交网络应用上格式化日期,就像Digg.com和其他网站一样.在那里,你会看到非常友好的约会,例如:
在我开始创建这样的东西之前,有没有人知道任何现成的脚本,我只需插入一个日期戳,并根据它与当前时间的关系给出一个友好的日期文本?
PS:我需要在PHP中使用它,但伪代码或任何其他语言也可以.
我最近一直在寻找ASP.NET MVC框架中的最佳实践,特别是关注的关注.我的问题是,如果我在模型上有属性,那么在该属性上进行某些格式化的最佳位置在哪里?
我想过几个选项,但不确定哪个是最好的.该示例使用DateTime.对不起,这有点长.
选项1:
在视图中:@Model.TheDate.String("{0:'blah'dd/MM/yyyy}")
我知道这不对,因为格式字符串不应该在这里(如果我想在整个应用程序中更改格式怎么办)
选项2:
视图中使用的扩展方法:@Model.TheDate.DisplayItNicePlease()
这种方式很有意义,因为视图正在选择用于格式化的扩展方法,而viewmodel只是将date属性公开给视图.不确定视图或视图模型是否应该负责格式化.
选项3: 在Html Helper方法中,例如,我应该在ASP.NET MVC 3中放置声明性HTML帮助器,以便您可以使用:
@Html.DisplayDateNice(Model.TheDate)
Run Code Online (Sandbox Code Playgroud)
选项4: 视图模型上的额外属性,以格式化它并返回一个字符串,例如:
public string TheDateStr
{
get
{
return TheDate.DisplayItNicePlease();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中你就拥有了
@Model.TheDateStr
Run Code Online (Sandbox Code Playgroud)
与选项3非常相似,只是它保持视图真实,非常简单 - 视图只是输出模型中的内容而不关心数据的格式.
选项5: DisplayFormat属性,例如:在视图模型上:
[DisplayFormat(DataFormatString = "{0:'blah'dd/MM/yyyy}")]
public DateTime TheDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后在视图上:
@Html.DisplayFor(m => m.TheDate)
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,除了格式字符串不再使用,所以带上选项5 ......
选项6:
某种习惯,DisplayFormatAttribute例如NiceDateDisplayFormatAttribute.在我看来,这可能是最好的解决方案,如果您只想要一个简单的字符串格式化,那么效果很好.我认为如果你想要更复杂的东西会变得更复杂,例如显示相对时间(计算C#中的相对时间),在这种情况下,最好是在扩展方法/ html助手中.
可能还有其他方法我甚至都不知道......
有没有人知道一个库或什么会将NSDate转换成字符串,如下面的例子?
1 hour ago
yesterday
last Thursday
2 days ago
last month
6 months ago
last year
Run Code Online (Sandbox Code Playgroud) 这个问题是问题的另一面,问" 我如何计算相对时间? ".
鉴于相对时间的一些人为输入,你如何解析它?默认情况下,您将偏移DateTime.Now(),但可以选择从另一个偏移DateTime.
(首选C#中的答案)
输入示例:
编辑: 我们假设我们可以在输入上定义一些限制.这种代码在网络上是有用的.
我想写一个模糊日期方法来计算iPhone的Objective-C中的日期.这里有一个流行的解释:
但它包含缺少的参数.怎么能在Objective-C中使用它?谢谢.
const int SECOND = 1;
const int MINUTE = 60 * SECOND;
const int HOUR = 60 * MINUTE;
const int DAY = 24 * HOUR;
const int MONTH = 30 * DAY;
if (delta < 1 * MINUTE)
{
return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
}
if (delta < 2 * MINUTE)
{
return "a minute ago";
}
if (delta < 45 * MINUTE)
{
return ts.Minutes + …Run Code Online (Sandbox Code Playgroud) 有没有人知道用于将TimeSpan对象转换为"友好"字符串的好库(或代码片段),例如:
(这是一个文件到期系统,到期时间可能是几天到几十年)
只是为了澄清,说我有7天的TimeSpan,应打印"1周",14天"2周",366天"1年1天"等.
您可能已经注意到某些Web应用程序(例如,GMail的某些部分)以比DD/MM/YYYY更人性化的格式显示日期.
例如,如果我打开23日的邮件(在撰写本文时恰好是3天前,我会得到以下内容:
12月23日(3天前)
我想在我自己的Web应用程序中实现类似的逻辑.
例如,在处理.NET TimeSpan对象时,我想将其转换为如下文本:
2个月
3天
是否有一个.NET库能够做到这一点?
如果不是,我可能会建立一些基本的和开源的东西.
我在这里做了一个基本的开始:
public static class TimeSpanHelpers
{
public static string ToHumanReadableString(
this TimeSpan timeSpan)
{
if (timeSpan.TotalDays > 30)
return (timeSpan.TotalDays / 30) + " month(s)";
if (timeSpan.TotalDays > 7)
return (timeSpan.TotalDays / 7) + " week(s)";
return (timeSpan.TotalDays) + " day(s)";
}
}
Run Code Online (Sandbox Code Playgroud) 我正在C#中为winforms应用程序实现模糊日期控件.模糊日期应该能够采用类似的模糊值
等等
是否有"模糊"日期时间选择器的任何示例实现?
任何实现这种控制的想法都将受到赞赏
有没有人有一个简单的功能可以将日期转换为简单的字符串(使用.Net)?
例如,2009年10月14日将会出现"今天",2009年10月13日会读到"昨天",而09年10月7日会读到"1周前"等等......
干杯,蒂姆
c# ×5
date ×3
.net ×2
asp.net-mvc ×2
datetime ×2
timespan ×2
algorithm ×1
cocoa ×1
date-format ×1
formatting ×1
fuzzy ×1
iphone ×1
nsdate ×1
nsstring ×1
objective-c ×1
parsing ×1
php ×1
string ×1
time ×1
winforms ×1