将十进制数添加到日期 - C#

时间:2016-06-02 09:40:22

标签: c# datetime decimal

如何将十进制数字(例如<?php include ('db_connect.php'); $sql="select * from institution"; $result= mysqli_query($conn, $sql); while ($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['ins_id'] . "</td>"; echo "<td>" . $row['ins_name'] . "</td>"; echo "<td>" . $row['address'] . "</td>"; echo "<td>" . $row['contact'] . "</td>"; echo "<td><a href=" . $row['website'] . ">" . $row['website'] . "</a></td>"; echo "<td>" . $row['email'] . "</td>"; echo "</tr>"; } echo "</table>" ?> )转换为年份和月份(2年零6个月)并将其添加到指定日期?我试过2.5但它没有用。

5 个答案:

答案 0 :(得分:9)

如果您使用它多年,那么将您的浮动乘以12. 2.5变为30个月。然后使用addmonths函数。如果我输入5那么它将增加60个月,即5年

答案 1 :(得分:2)

如果您的初始日期为dt而不是

dt = dt.AddMonths((int)(2.5*12));

答案 2 :(得分:2)

通常您只需添加TimeSpan或使用其中一种Add方法,如下所示:

decimal yearsToAdd = (decimal)2.5;

int years = (int)Math.Floor(yearsToAdd);
decimal months = yearsToAdd - years;
int actualMonths = (int) Math.Floor(months * 12); // or Ceiling or Round

DateTime x = DateTime.Now.AddYears(years).AddMonths(actualMonths);

问题是,当你的小数没有产生exacat数月时,你怎么知道多长时间,例如半个月是? 28.0 / 229.0 / 230.0 / 231.0 / 2? 你会花一个月的长度或最后一个可能的两个月吗?

答案 3 :(得分:0)

decimal x =(decimal)2.5;

int nbYear = Convert.ToInt16(x);
var y = x - Math.Truncate(x);

int nbMonth =Convert.ToInt16 (y*12);
// MessageBox .Show (string.Format (" {0} years and {1} months ",nbYear ,nbMonth ));
DateTime dat=DateTime .Now ;  // or    given date
DateTime dat2 = dat.AddYears(nbYear).AddMonths(nbMonth);

答案 4 :(得分:0)

如果月份是你的最小单位,那么正如许多人所指出的那样,解决方案是将数字乘以12.更准确的替代方法是使用滴答。

decimal years=3.14592M; // No idea where this came from.
long ticks = (long)(356.0M * (decimal)TimeSpan.TicksPerDay * years); 
DateTime futureDate=DateTime.Today.AddTicks(ticks);

请注意,解决方案不会弥补闰年。扩展它并不困难 - 您需要计算该期间的闰年数量,并使用平均值而不是356.0M来计算每年的蜱虫数量(即平均每年的天数*每天蜱虫数量)。