1

I have two content type, Bill (Type1) and Cash Receipts (Type2), Type2 referencing Type1 when cash is received.

In Type1 I have date field called (Bill Issue date), and Type2 I have date field cash receipt date.

So I want to calculate, different between those two dates. I was trying by creating views with two date (by entity reference relationship), then subtract two filed with math expression field, but it return zero.

Actually, I have no idea whether I was wrong or Its not possible to calculate different between dates with views math expression field?

I think, it can be done with Computed Field, I did one within same content type, but I don’t know how to access a field from different content type, please help.

Code that I was used to calculate date for same content type, but how I can access a field from other content type?

If the Machine name of your date-field is 'field_example_date', then the Computed Code (PHP) would be

$startdate = $entity->field_example_date['und'][0]['value']; // Value of start-date
$enddate = $entity->field_example_date['und'][0]['value2']; // Value of end-date

$datediff = strtotime($enddate) - strtotime($startdate);
/* The PHP Function STRTOTIME parses the english textual datetime description
 * into a Unix timestamp
 */

$num_leaves = $datediff/(60*60*24);
/* Since we need the number of days IN-BETWEEN, 
 * we divide the resultant difference by 60*60*24 . 
 *
 * Incase of counting no.of days "FROM" to "TO" days, add 1 to the above result.
 * $num_leaves = $datediff/(60*60*24) + 1;
 */

 $entity_field[0]['value'] = $num_leaves;





The Display Code (PHP) will have

$display_output = $entity_field_item['value'];
0

1 Answer 1

0

You can achieve this use a template file, since you can use PHP inside templates in Drupal 7

In your view

enter image description here

Now, add both of your date fields and do this to each of them

enter image description here

In your web directory, go to /sites/all/themes/[yourtheme]/templates folder

Create a file named views-view-fields--[view-name]--[machine-name].tpl.php

EX: views-view-fields--hello-world--block-1.tpl.php

Inside the template file put:

<?php

$date1 = new DateTime('$fields["field_invoice_issue_date"]->content');
$date2 = new DateTime('$fields["field_payment_receipt_date"]->content');
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days "; 

// shows the total amount of days (not divided into years, months and days like above)
echo "difference " . $interval->days . " days ";

?>

Remember to flush/clear the cache to see changes.

3
  • I was trying to follow your each step, but no success. Its table format, my views name is "date_calculator" and its page view, so I added code into views-view-fields--date_calculator--page.tpl.php on the other hand there no option to add custom date format in view so I added your format from admin/config/regional/date-time and then select it. Filed name is field_invoice_issue_date and field_payment_receipt_date . So what I need to do? Commented Jul 8, 2016 at 11:49
  • I added code into views-view-fields--date_calculator--page.tpl.php your view name needs to be views-view-fields--date-calculator--page.tpl.php I have added your date fields to the code.
    – No Sssweat
    Commented Jul 8, 2016 at 22:46
  • I have updated the code, I noticed I had a minor error.
    – No Sssweat
    Commented Jul 8, 2016 at 23:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.