检查日期是否在c(阵列)中的两个日期之间

时间:2016-02-25 11:35:03

标签: c arrays

我有三个int数组

int a[3] = {2,25,2015} //Date : d,mm,yyyy
int b[3] = {4,15,2016}
int c[3] = {7,10,2017}

我想检查b是否介于a和c

之间

5 个答案:

答案 0 :(得分:4)

以下小程序完全符合您的要求。注意:您可以轻松使用smaller函数创建所有布尔运算符(<=, >=, ==, !=, >

#include <stdio.h>

typedef int Date[3];

int smaller(Date a, Date b)
{
  if (a[2] < b[2]) return 1; // compare years
  if (a[2] == b[2] && a[1] < b[1]) return 1; // compare months - but make sure years are equal
  if (a[2] == b[2] && a[1] == b[1] && a[0] < b[0]) return 1; // compare days but make sure years and months are equal
  return 0;
}

int main()
{
  Date a = {2,25,2015}; //Date : d,mm,yyyy
  Date b = {4,15,2016};
  Date c = {7,10,2017};

  printf("%s\n", (smaller(a, b) && smaller(b, c)) ? "b between a and c" : "b is not between a and c");
}

typedef是为了让代码更容易阅读。你还可以

答案 1 :(得分:0)

必须将数组b的每个值与数组a和c的每个对应值进行比较。您可以尝试以下方法:

@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId)
{
    if (nodes.Count() > 0)
    {
        <ul>
            @foreach (var node in nodes)
            {
                var childrenItems = node.Children.Where("UmbracoNaviHide == false");
                <li class="@(CurrentPage.Id == node.Id ? "sel" : null)">
                    <a href="@node.Url"><h5>@node.GetPropertyValue("menuName")</h5></a>
                    @createSubmenu(childrenItems, node.Id)
                </li>
            }
        </ul>
    }
}

但是,如果您展示了您尝试过的代码会更好,以便我们可以帮助您修改它。

答案 2 :(得分:0)

// Assuming between means not inclusive..

bool isDateWithinRange = false;
for(i=2;i>=0;i--)
{
    if(a[i]<b[i] && b[i]<c[i]){
        isDateWithinRange = true;
        break;
    }
    if(a[i]>b[i] || b[i]>c[i])
        break;
}

答案 3 :(得分:0)

这是一种与我们使用的心态不同的问题。如果我们将日期转换为其他形式(即自某个参考点以来经过的日期或经过的时间),则比较日期会更容易。

在您的情况下,我看到两个选项:

  1. 创建一个小型函数,从标准日期格式(dd / mm / yyyy)转换为自参考时间以来的延迟日期格式(即将2016年2月25日转换为自2016年1月1日以来的惨淡日期将给我们31 + 25 = 56天);
  2. 使用C自己的time.h。它给你自1970年1月1日以来的倒数秒(a.k.a。&#39; epoch&#39;)。

答案 4 :(得分:-1)

尝试类似

的内容
    if(((a[2] <= b[2]) && (c[2] >= b[2])) || ((a[2] >= b[2]) && (c[2] <= b[2])))
    then
        //check month and day
    else
        false;