Subtracting a time difference from an int?

Hey! I have a question, I have been trying to make a timer that keeps going down while the application is closed (using System.DateTime) here is my script.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
public class Craft : MonoBehaviour {
	DateTime currentDate;
	DateTime oldDate;

	public float tinpaneltimer;
	public bool tinpaneltimerOn = false;

	public string saveLocation;
	public static Craft instance;


	public Text CraftSteelButtonText;
	public Text CraftElectrumButtonText;
	public Text CraftTinPanelButtonText;
	public int Iron;
	public int Coal;
	public int Steel;

	public int Silver;
	public int GoldOre;
	public int Electrum;

	public int Diff;

	public int Tin;
	public int TinPanel;



	public int XP;
	public int XPCap;
	public int Level;
	public int XPCapMulitplier;

	public Text SteelAmount;
	public Text ElectrumAmount;
	public Text TinPanelAmount;

	public Text SlotSteelText;
	public Text SlotElectrumText;
	public Text SlotTinPanelText;

	public bool CraftSteelOn = false;
	public bool CraftElectrumOn = false;
	public bool CraftTinPanelOn = false;


	public Button CraftSteelButton;
	public Image CraftSteelButtonImage;
	public Image CraftSteelButtonImageRight;

	public Button CraftElectrumButton;
	public Image CraftElectrumButtonImage;
	public Image CraftElectrumButtonImageRight;

	public Button CraftTinPanelButton;
	public Image CraftTinPanelButtonImage;
	public Image CraftTinPanelButtonImageRight;

	public Image Panel1;
	public Image Panel2;
	public Image Panel3;

	public Image LevelBar;

	public AudioSource Audio;


	void Start()
	{
		CheckDate ();
		if (tinpaneltimer == 0) {

			tinpaneltimer = 120;
		}
		if (tinpaneltimerOn == true) {
			
			tinpaneltimer -= instance.CheckDate ();
		}

			
	}

	void Awake()
	{
		
		instance = this;

		saveLocation = "lastSavedDate1";

	}

	public float CheckDate()
	{
		currentDate = System.DateTime.Now;
		string tempString = PlayerPrefs.GetString (saveLocation, "1");
		long templong = Convert.ToInt64 (tempString);
		DateTime oldDate = DateTime.FromBinary (templong);
		print ("Old Date: " + oldDate);
		TimeSpan difference = currentDate.Subtract (oldDate);

		**tinpaneltimer = (120 - difference);**  //Here is where im trying to figure it out

		print ("Difference: " + difference);
		return (float)difference.TotalSeconds;
	}

	public void SaveDate()
	{
		PlayerPrefs.SetString (saveLocation, System.DateTime.Now.ToBinary ().ToString ());
		print ("Saving this date to player prefs: " + System.DateTime.Now);
	}

	public void ExitButton()
	{
		Panel1.gameObject.SetActive (false);
		Panel2.gameObject.SetActive (false);
		Panel3.gameObject.SetActive (false);
		LevelBar.gameObject.SetActive (true);
	}

	public void ClickSlot1()
	{
		Panel1.gameObject.SetActive (true);
		LevelBar.gameObject.SetActive (false);
	}
	public void ClickSlot2()
	{
		Panel2.gameObject.SetActive (true);
		LevelBar.gameObject.SetActive (false);
	}
	public void ClickSlot3()
	{
		Panel3.gameObject.SetActive (true);
		LevelBar.gameObject.SetActive (false);
	}
		



	void Update()
	{
		
		if (tinpaneltimer == 0) {
			StartC3 ();
		}
		if (tinpaneltimerOn == true) {
			CheckDate ();
			tinpaneltimer -= Time.deltaTime;
		}

		//Maybe either have a long time for bigger items or just not and have same craft time.
		SlotSteelText.text = "" + Steel;
		SlotElectrumText.text = "" + Electrum;
		SlotTinPanelText.text = "" + TinPanel;
		if (CraftSteelOn == true) {
			
			CraftSteelButtonImage.fillAmount += 1f / 2f * Time.deltaTime;
			CraftSteelButtonImageRight.fillAmount += 1f / 2f * Time.deltaTime;
		}
		if (CraftElectrumOn == true) {

			CraftElectrumButtonImage.fillAmount += 1f / 2f * Time.deltaTime;
			CraftElectrumButtonImageRight.fillAmount += 1f / 2f * Time.deltaTime;
		}
		if (CraftTinPanelOn == true) {

			CraftTinPanelButtonImage.fillAmount += 1f / (120 - tinpaneltimer) * Time.deltaTime;
			CraftTinPanelButtonImageRight.fillAmount += 1f / (120 - tinpaneltimer) * Time.deltaTime;
		}
		//Store Date.Time when you start the craft and keep checking it until the subtraction is equal to variable
		SteelAmount.text = "" + Steel;
		ElectrumAmount.text = "" + Electrum;
		TinPanelAmount.text = "" + TinPanel;
		XP = PlayerPrefs.GetInt ("XP");
		XPCap = PlayerPrefs.GetInt ("XPCap");
		Level = PlayerPrefs.GetInt ("Level");
		XPCapMulitplier = PlayerPrefs.GetInt ("XPCapMultiplier");

		Iron = PlayerPrefs.GetInt ("Iron");
		Coal = PlayerPrefs.GetInt ("Coal");
		Steel = PlayerPrefs.GetInt ("Steel");

		Silver = PlayerPrefs.GetInt ("Silver");
		GoldOre = PlayerPrefs.GetInt ("GoldOre");
		Electrum = PlayerPrefs.GetInt ("Electrum");
		TinPanel = PlayerPrefs.GetInt ("TinPanel");
		Tin = PlayerPrefs.GetInt ("Tin");


	}
	public void CraftSteel()
	{
		
		if (Iron >= 1 && Coal >= 1) {
			Audio.Play ();
			CraftSteelOn = true;
		
			XP = XP + 20;
			PlayerPrefs.SetInt ("Level", Level);
			PlayerPrefs.SetInt ("XPCap", XPCap);
			PlayerPrefs.SetInt("XP", XP);
			PlayerPrefs.SetInt ("XPCapMultiplier", XPCapMulitplier);

			StartC ();
		}
		if (Iron <= 1 || Coal <= 1) {
			CraftSteelButtonText.text = "CANT AFFORD";
	
		}
	}
	public void CraftElectrum()
	{

		if (Silver >= 1 && GoldOre >= 1) {
			Audio.Play ();
			CraftElectrumOn = true;

			XP = XP + 20;
			PlayerPrefs.SetInt ("Level", Level);
			PlayerPrefs.SetInt ("XPCap", XPCap);
			PlayerPrefs.SetInt("XP", XP);
			PlayerPrefs.SetInt ("XPCapMultiplier", XPCapMulitplier);

			StartC2 ();
		}
		if (Silver <= 1 || GoldOre <= 1) {
			CraftElectrumButtonText.text = "CANT AFFORD";

		}
	}
	public void CraftTinPanel()
	{

		if (Tin >= 4) {
			
			SaveDate ();
			tinpaneltimerOn = true;
			Audio.Play ();
			CraftTinPanelOn = true;


			XP = XP + 13;
			PlayerPrefs.SetInt ("Level", Level);
			PlayerPrefs.SetInt ("XPCap", XPCap);
			PlayerPrefs.SetInt("XP", XP);
			PlayerPrefs.SetInt ("XPCapMultiplier", XPCapMulitplier);


		}
		if (Tin <= 4) {
			CraftTinPanelButtonText.text = "CANT AFFORD";

		}
	}

	public IEnumerator WaitForView()
	{
		
		CraftSteelButtonText.text = "CRAFTED";

		CraftSteelButton.interactable = false;
		yield return new WaitForSeconds (2f);
		PlayerPrefs.SetInt ("Iron", PlayerPrefs.GetInt ("Iron") - 1);
		PlayerPrefs.SetInt ("Coal", PlayerPrefs.GetInt ("Coal") - 1);
		PlayerPrefs.SetInt ("Steel", PlayerPrefs.GetInt ("Steel") + 1);
		CraftSteelOn = false;
		CraftSteelButtonImage.fillAmount = 0;
		CraftSteelButtonImageRight.fillAmount = 0;
		CraftSteelButton.interactable = true;
		CraftSteelButtonText.text = "CRAFT";
	}

	public IEnumerator WaitForView2()
	{

		CraftElectrumButtonText.text = "CRAFTED";

		CraftElectrumButton.interactable = false;
		yield return new WaitForSeconds (2f);
		PlayerPrefs.SetInt ("Silver", PlayerPrefs.GetInt ("Silver") - 1);
		PlayerPrefs.SetInt ("GoldOre", PlayerPrefs.GetInt ("GoldOre") - 1);
		PlayerPrefs.SetInt ("Electrum", PlayerPrefs.GetInt ("Electrum") + 1);
		CraftElectrumOn = false;
		CraftElectrumButtonImage.fillAmount = 0;
		CraftElectrumButtonImageRight.fillAmount = 0;
		CraftElectrumButton.interactable = true;
		CraftElectrumButtonText.text = "CRAFT";
	}

	public IEnumerator WaitForView3()
	{

		CraftTinPanelButtonText.text = "CRAFTED";
		yield return new WaitForSeconds (1f);
		CraftTinPanelButton.interactable = false;
		PlayerPrefs.SetInt ("Tin", PlayerPrefs.GetInt ("Tin") - 4);
		PlayerPrefs.SetInt ("TinPanel", PlayerPrefs.GetInt ("TinPanel") + 1);
		tinpaneltimer = 120;
		CraftTinPanelOn = false;
		tinpaneltimerOn = false;
		CraftTinPanelButtonImage.fillAmount = 0;
		CraftTinPanelButtonImageRight.fillAmount = 0;
		CraftTinPanelButton.interactable = true;
		CraftTinPanelButtonText.text = "CRAFT";
	}



	void StartC()
	{
		StartCoroutine (WaitForView ());
	}

	void StartC2()
	{
		StartCoroutine (WaitForView2 ());
	}

	void StartC3()
	{
		StartCoroutine (WaitForView3 ());
	}

}

Ok so the “**” show where the problem is and I know that that line will return the error "Operator “-” cant be used on operants “int” and “timespan” I’m trying to figure out a way to subtract the TimeSpan difference between the (oldDate and the currentDate) and a int. If you now how to do this please leave a comment! Maybe it has something to do with Converting it to an Int but i dont know how to.

The TimeSpan struct has no operators overloaded for numeric types.

You can solve this either this way:

    TimeSpan dt = TimeSpan.FromSeconds(120) - difference;
    float tinpaneltimer = (float)dt.TotalSeconds;

or this way:

float tinpaneltimer = (float)(120 - difference.TotalSeconds);

Provided that tinpaneltimer is meassured in seconds.