2016-03-14 131 views
-4

我没找什么,但未能成功地找到一个解决方案的个体数。添加日期

有没有办法找到一个日期的数字的总和。 例如:如果日期是2016-03-14我想补充了所有的数字来得到总的17。我真的很感激,如果我可以得到Python或Java答案(我知道这是奇怪的请求,但我个人喜欢使用Python,但专业我使用Java因此,知道这些信息这两种语言将是真正有益的我)

Edit_1:我有遍历天的具体数量(包括日,月,年),并添加日期的个别数字得到的总和。

+0

只是重复数字,并添加他们是他们是数字? –

+1

日期是'Date'对象还是'String'? – Maljam

+0

@Maljam。它是一个Date对象。我必须迭代特定数量的日期并获得总和。 –

回答

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; 
} 
+0

哦,对不起,它是用于Calendar对象的。 – Eva

1

我不知道为什么你要做到这一点,但这里是使用和迭代字符数组做它在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 
2

的Java:

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()]) 
+0

它不是一个字符串。我在Python中使用'datetime',因为我必须迭代几天。 –

+0

将其转换为字符串,然后使用'str(date)',如答案中所示。 –

+0

是的,会做到这一点。因为答案很简单,我将删除这个问题。 –

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;