添加日期的个别编号

时间:2016-03-14 14:21:38

标签: java python

我确实找了些东西,但无法成功找到解决方案。

有没有办法找到日期数字的总和。 例如:如果日期为2016-03-14,我想将所有数字相加以获得17的总数。

如果我能在python或java中得到答案,我将非常感激(我知道这是奇怪的请求但我个人喜欢使用python但是专业我使用java因此,知道这些信息这两种语言对我来说真的很有用。)

Edit_1:我必须迭代特定天数(包括日期,月份,年份)并添加日期的各个数字以获得总和。

4 个答案:

答案 0 :(得分:2)

爪哇:

int total = 0;
String str = date.toString();
for (int i = 0; i < str.length(); ++i) {
  if (Character.isDigit(str.charAt(i))) {
    total += Character.getNumericValue(str.charAt(i));
  }
}

的Python:

total = 0
string = str(date)
for c in string:
  if c.isdigit():
    total += int(c)

或者,作为列表理解:

sum([int(c) for c in str(date) if c.isdigit()])

答案 1 :(得分:1)

嗯。 类似的东西:

int sum = getDigits(date.get("YEAR")) + getDigits(date.get("MONTH")) + getDigits(date.get("DAY_OF_MONTH"));

public int getDigits(int num) {
int sum = 0;
while (num > 0) {
    sum = sum + num % 10;
    num = num / 10;
}
return sum;
}

答案 2 :(得分:1)

我不知道你为什么要这样做但是这里是一个通过使用和迭代char数组在JAVA中完成它的简单方法。

以下是代码段:

public static void main (String[] args) 
{
    String date = "2016-03-14";
    char[] input = date.toCharArray();
    int sum = 0;
    for(char c : input) {
        if((int)(c - '0') >= 0 && (int)(c - '0') <=9)
            sum += (int)(c - '0');
    }
    System.out.println("Sum: " + sum);
}

输出:

Sum: 17

答案 3 :(得分:1)

您可以简单地执行以下操作:

int sum = 0;
for(char c : str.toCharArray()) {
    if( Character.isDigit(c) ) sum += (c-'0'); 
}

如果您的日期是Date对象:

int sum = 0;
for(int year = date.getYear() ; year > 0 ; year /= 10) sum += year%10;
for(int month = date.getMonth() ; month > 0 ; month /= 10) sum += month%10;
for(int date = date.getDate() ; date > 0 ; date /= 10) sum += date%10;