我想将此2015-08-11 10:59:41.830
值拆分为datetime数据类型格式,并使用c#asp.net将其转换为以下格式。
August 11, 45 minutes ago
给定的日期时间(i.e-2015-08-11 10:59:41.830
)将与当前日期时间进行比较,并显示如上格式。请帮我这样做。
答案 0 :(得分:2)
您需要使用DateTime.Parse(string s)
解析日期,一旦完成,您将获取当前日期(DateTime.Now
)并从中减去解析日期。
这应该产生TimeSpan
结构。假设两个日期都引用相同的日期,则可以通过从解析日期(日和月)和时间跨度(小时,分钟和秒)中获取所需的部分来构造字符串。
答案 1 :(得分:0)
对于您的特定格式,您可以尝试ParseExact() "yyyy-MM-dd HH:mm:ss.fff"
static void Main(string[] args)
{
//Given that previous and and now is the same day
DateTime previous = DateTime.ParseExact("2015-08-18 10:59:41.830", "yyyy-MM-dd HH:mm:ss.fff",
System.Globalization.CultureInfo.InvariantCulture);
DateTime now = DateTime.Now;
double value = now.Subtract(previous).TotalMinutes;
Console.WriteLine(string.Format("{0:MMMM dd}, {1} minutes ago", now, (int)value));
Console.ReadLine();
}
答案 2 :(得分:0)
npinti已经explained了,这里是代码部分;
string s = "2015-08-18 10:59:41.830";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
var ts = dt - DateTime.Now;
Console.WriteLine("{0}, {1} minutes ago",
dt.ToString("MMMM dd", CultureInfo.InvariantCulture),
ts.Minutes);
}
我在当地时间运行此代码2015-08-18 09:50
,因此会生成August 18, 9 minutes ago
。
请记住,Minutes
property代表TimeSpan对象的分钟组件,其范围从-59
到59
。如果您想根据TimeSpan对象值获取所有分钟数,可以使用TotalMinutes
property(或甚至(int)ts.TotalMinutes
)。
答案 3 :(得分:0)
你需要这个
var yourString = "2015-08-11 10:59:41.830";
var oldDate = DateTime.ParseExact(yourString, "yyyy-MM-dd hh:mm:ss.fff", CultureInfo.InvariantCulture);
//The above two steps are only for if you have date in `string` type, but if you have date in `DateTime` format then skip these.
var difference = DateTime.Now - oldDate;
//here old date is parsed from string or your date in `DateTime` format
var result = string.Format("{0:MMMM dd}, {1} minutes ago", oldDate, difference.Minutes);