c# nasıl saat ile işlem yapabilirim ?

eyibilenefe

Gold Üye
Katılım
10 Ocak 2021
Mesajlar
101
Beğeniler
5
Yaş
19
mesala saat 4 ile 8 arasında sunu sunu yap demek istiyorum .datetime kullanınca string türünden oluyor bunu nasıl int türünden kullanabilirim ? yardımcı olursanız teşekkür ederim .
if(suanki saat =>dersaati&&saat5<dersaati)
{

//suanki saat ile derssaatini nasıl karsılastırabilirim ?

}
 
şuanki saati ne olarak tanımlandın.Aşagıdaki koddan ilerle.Ayrıca tam olarak ne yapmak istedigini anlamadım.Açıklarsan yardımcı olurum

C#:
Console.WriteLine(DateTime.Now.ToShortTimeString());
 
şöyle örnek vereyim ikili işlem yapıcaksan ve saatler arasında işlem yapıcaksan bu yardımcı olursana.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CheckTime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Programın Çalıştığı Dosyanın Konumu:
        string program_directory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
        //Kaydedilecek Dosya Adı ve Uzantısı (Uzantı size kalmıştır dilediğiniz gibi uzantı kullanabilirsiniz isterseniz .adınız yapın hiç fark etmez.):
        string filename = @"/checktime.sefa";
        private void btn_OpenForm2_Click(object sender, EventArgs e)
        {
            //Yeni bir StreamWriter oluşturup belirlediğimiz dosya yoluna ve adına yazmasını belirtiyoruz:
            StreamWriter sw = new StreamWriter(program_directory+filename);
            //Ve son olarak bu dosyaya yazacağı şeyi yani Form2'nin açılış tarihini yazdırıyoruz
            //Bu butona basılınca Form2 yi açacağından basıldığı zaman Form2'nin açılış zamanıdır. Dolayısıyla DateTime.Now (Şuan) çekmemiz yeter:
            sw.Write(DateTime.Now.ToString());
            sw.Dispose();
            //Şimdi de Form2 yi oluşturup açıyoruz:
            Form Form2 = new Form
            {
                Text = "2. Form",
                ShowIcon = false
            };
            Form2.Show();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Burada ana form yüklenirken progrmaın dosya yolunda bir checktime.sefa dosyası olup olmadığını kontrol edip eğer varsa içindeki zamanı çektireceğiz.
            //Ve daha sonra çektiğimiz o zaman ile Form2'yi açan butonun tekrar aktif olması için istediğimiz zaman farkı şartını belirteceğiz.
          
            //Dosyanın olup olmadığını bilmediğimiz için bunu try catch ile gerçekleştireceğiz. Dosyayı başka türlü kontrol etme şansımızda var,
            //fakat zaten try catch işimizi yeterince görüyorken başka bir kütüphane importlayıp kasmaya gerek yok.
            try
            {
                //StreamReaderımızı oluşturup programın konumundaki checktime.sefa dosyasını okuması için hazırladık.
                StreamReader sr = new StreamReader(program_directory + filename);
                //Okuyacağı veri String olduğu için DateTime olarak çevirdik ve dt adlı bir DateTime'ın içine attık.
                DateTime dt = Convert.ToDateTime(sr.ReadLine());
                //Form2'nin açılış tarihini formdaki labela yazdırdık:
                lab_time.Text = dt.ToString();
                //Form2'nin tekrar açılması için kalan süreyi formdaki labela yazdırdık:
                // Math Round ile 2 saat arasındaki çıkan sonucun ondalık değerini 2 basamağa indirgedik:
                lab_remaining.Text = Math.Round((24 - (DateTime.Now - dt).TotalHours),2).ToString() + " Saat";
                //Bir if kontrolü ile açılış zamanı ile şuan arasında 24 saat olup olmadığını kontrol ettik:
                if ((DateTime.Now - dt).TotalHours < 24)
                {
                    //Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük ise. Yani 24 saat geçmemişse Form2 yi açamaması için
                    //Butonun enabled değerini false yaptık.
                    btn_OpenForm2.Enabled = false;
                }
                else
                {
                    //Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük değilse. Yani 24 saat geçmişse Form2 yi tekrar açabilmesi için
                    //Butonun enabled değerini true yaptık.
                    btn_OpenForm2.Enabled = true;
                    //Ve checktime.sefa dosyasını sildirerek yeni giriş için hazır hale getiriyoruz:
                    File.Delete(program_directory + filename);
                }

        
            }
            catch (Exception) //StreamReader'ın okuyacağı dosya yok ise;
            {
                //StreamReader'ın okuyacağı dosya yani zaman dosyası yok ise daha önce Form2 açılmamış demektir. Bu nedenle Form2 yi açmasına izin verip,
                //Enabled değerini true yapıyoruz.
                btn_OpenForm2.Enabled = true;
            }
            
        }
    }
}
 
TotalHours galiba ihtiyacım olan buydu birazdan deneyeceğim

if ((DateTime.Now - dt).TotalHours < 24)
{
//Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük ise. Yani 24 saat geçmemişse Form2 yi açamaması için
//Butonun enabled değerini false yaptık.
btn_OpenForm2.Enabled = false;
}

su kodu arıyordum
 
Timer kullanarak saat yapabilirsin. Değişkenleri arttırıp 60 olduğunda bir sonrakini arttırmak temel mantığı.
 
şöyle örnek vereyim ikili işlem yapıcaksan ve saatler arasında işlem yapıcaksan bu yardımcı olursana.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CheckTime
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Programın Çalıştığı Dosyanın Konumu:
        string program_directory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
        //Kaydedilecek Dosya Adı ve Uzantısı (Uzantı size kalmıştır dilediğiniz gibi uzantı kullanabilirsiniz isterseniz .adınız yapın hiç fark etmez.):
        string filename = @"/checktime.sefa";
        private void btn_OpenForm2_Click(object sender, EventArgs e)
        {
            //Yeni bir StreamWriter oluşturup belirlediğimiz dosya yoluna ve adına yazmasını belirtiyoruz:
            StreamWriter sw = new StreamWriter(program_directory+filename);
            //Ve son olarak bu dosyaya yazacağı şeyi yani Form2'nin açılış tarihini yazdırıyoruz
            //Bu butona basılınca Form2 yi açacağından basıldığı zaman Form2'nin açılış zamanıdır. Dolayısıyla DateTime.Now (Şuan) çekmemiz yeter:
            sw.Write(DateTime.Now.ToString());
            sw.Dispose();
            //Şimdi de Form2 yi oluşturup açıyoruz:
            Form Form2 = new Form
            {
                Text = "2. Form",
                ShowIcon = false
            };
            Form2.Show();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Burada ana form yüklenirken progrmaın dosya yolunda bir checktime.sefa dosyası olup olmadığını kontrol edip eğer varsa içindeki zamanı çektireceğiz.
            //Ve daha sonra çektiğimiz o zaman ile Form2'yi açan butonun tekrar aktif olması için istediğimiz zaman farkı şartını belirteceğiz.
         
            //Dosyanın olup olmadığını bilmediğimiz için bunu try catch ile gerçekleştireceğiz. Dosyayı başka türlü kontrol etme şansımızda var,
            //fakat zaten try catch işimizi yeterince görüyorken başka bir kütüphane importlayıp kasmaya gerek yok.
            try
            {
                //StreamReaderımızı oluşturup programın konumundaki checktime.sefa dosyasını okuması için hazırladık.
                StreamReader sr = new StreamReader(program_directory + filename);
                //Okuyacağı veri String olduğu için DateTime olarak çevirdik ve dt adlı bir DateTime'ın içine attık.
                DateTime dt = Convert.ToDateTime(sr.ReadLine());
                //Form2'nin açılış tarihini formdaki labela yazdırdık:
                lab_time.Text = dt.ToString();
                //Form2'nin tekrar açılması için kalan süreyi formdaki labela yazdırdık:
                // Math Round ile 2 saat arasındaki çıkan sonucun ondalık değerini 2 basamağa indirgedik:
                lab_remaining.Text = Math.Round((24 - (DateTime.Now - dt).TotalHours),2).ToString() + " Saat";
                //Bir if kontrolü ile açılış zamanı ile şuan arasında 24 saat olup olmadığını kontrol ettik:
                if ((DateTime.Now - dt).TotalHours < 24)
                {
                    //Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük ise. Yani 24 saat geçmemişse Form2 yi açamaması için
                    //Butonun enabled değerini false yaptık.
                    btn_OpenForm2.Enabled = false;
                }
                else
                {
                    //Açılış tarihi ile şuan arasındaki toplam saat 24 den küçük değilse. Yani 24 saat geçmişse Form2 yi tekrar açabilmesi için
                    //Butonun enabled değerini true yaptık.
                    btn_OpenForm2.Enabled = true;
                    //Ve checktime.sefa dosyasını sildirerek yeni giriş için hazır hale getiriyoruz:
                    File.Delete(program_directory + filename);
                }

       
            }
            catch (Exception) //StreamReader'ın okuyacağı dosya yok ise;
            {
                //StreamReader'ın okuyacağı dosya yani zaman dosyası yok ise daha önce Form2 açılmamış demektir. Bu nedenle Form2 yi açmasına izin verip,
                //Enabled değerini true yapıyoruz.
                btn_OpenForm2.Enabled = true;
            }
           
        }
    }
}
cok sağol bilgiler icin bro eline saglık
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt