2016-03-14 175 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;