c# 시간비교하기 datetime과 timespan 이용... 여러가지 비교

이거가지고 삽질 많이 했는데....
딱 이거다 하는 자료가 거의 안 보였었다.

우리나라 C#하는 사람들이 별로 없어서 그런걸까..
C#을 하는 사람이 없다기보다는.. C#으로 윈도우 프로그램을 만드는 사람이 별로 없는 것 같다.
델파이보다 오히려 더 적을지도...
아마추어들이 하려면 C++에 api mfc 핥아먹고 바로 C#으로 넘어오는 편이 더 나을 것 같은데...

--------

private void button1_Click(object sender, EventArgs e)
{
  TimeSpan asef = new TimeSpan(15,30,00);
  Console.WriteLine(asef);
  Console.WriteLine(DateTime.Now.Add(asef));//현재시간에 15시간을 더하기
  Console.WriteLine(DateTime.Now.TimeOfDay);//0시부터 현재시간까지를 TimeSpan값으로 반환
  Console.WriteLine(TimeSpan.Parse("15:30:00"));//TimeSpan값을 지정.. 문자열
}
DateTime과 TimeSpan 둘 다 시간을 표현한다.
다른점은...
DateTime은 몇월몇일몇시몇분을 달력이나 시계를 표현하고
TimeSpan은 1시간, 2시간,,,... 이런걸 표현한다고 할까..
시간과 시각?
전자시계 개념으로 설면하자면... 10분짜리 타이머를 맞춘다면... 
TimeSpan.. 알람을 맞추면..DateTime이렇게 보면 쉬울까...
DateTime - DateTime은 TimeSpan자료형이 된다.
(DateTime)2011년 2월 16일 21시 - (DateTime)2011년 2월 16일 15시 = (TimeSpan)6시간
위의 소스코드만으로도 설명은 충분할 것 같지만.... 추가하자면...
8시부터 뭔가를 실행시키고 싶다! 라고 한다면....
타이머 돌리고... System.Windows.Forms.Timer fajklefjl = new [tab] ();
if(DateTime.Now.TimeOfDay >TimeSpan.Parse("08:00:00"))
{}
 

C# UserComponent 쓸때 Object reference not set to an instance of an object: 오류경험처리

//에러가 발생했던 초기상태
public static string[] strArr주식코드;
public static string[] strArr옵션코드;
public static string[] strArr주식선물코드;
public static string[] strArr주식옵션코드;
문자열 클래스를 만들어놓고 생성자가 뜨면 이것들을 한번에 초기화 시켜주는 형태로 만들었다.
null 어쩌고 오류가 떴다. 근데 처음부터 떴으면 진작에 고쳐놨을건데 어이없게도 한참 잘 돌아가다가 그냥 갑자기 뜬다.;;;

어쨌든 그래서 눌들을 없애줬다.
프로그램 제일 앞부분에 이 클래스의 생성자를 호출 해 주기 때문에 순서상으로는 문제가 없지만....
비주얼 스튜디오가 이거 안하면 유저 컴포넌트를 안 띄워준다니까 할 수 없지..

//수정후
public static string[] strArr주식코드 = { "", "" };
public static string[] strArr옵션코드 = { "", "" };
public static string[] strArr주식선물코드 = { "", "" };
public static string[] strArr주식옵션코드 = { "", "" };
대충 초기화시켜줬다. 에러는 없어졌다.
어차피 생성자 뜨면서 값도 변경되니까 아무거나 넣어도 상관도 없고... 
어쨌든 한 20분쯤 골치 썪은 것 같다.
외국 커뮤니티 보니까 예외처리를 해버리라는 말도 있고 그랬는데...

값을 선언할 때는 무조건 초기화를 시켜놓자... 특히 static은

int int숫자= 0;

string str문자열=""

c#는 한글로 변수명이 잘 만들어져서 자주 사용하는데... 편하다.

호환이 안된다는 말도 있던데... 뭐 혼자 쓸거니까

그리고 어차피 한국에서만 쓴다면 문제 없을듯....

C# sql 데이타베이스 연결 문자열

SqlConnection myConnection = new SqlConnection ("Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False
");

SqlCommand myCommand = new SqlCommand("INSERT INTO [hello] ([hello]) VALUES (@hello)", myConnection);

SqlParameter helloParam = myCommand.Parameters.Add("@hello", SqlDbType.VarChar );

helloParam.Value = MyTextBox.Text;

myConnection.Open();

myCommand.ExecuteNonQuery();

ReplyQuote

이것때문에 한참 고생하다가 겨우... 찾았다
visual studio 2010 의 서버 익스플로러에서 데이타 커넥션 메뉴에 db를 띄워놓고
클릭하면 오른쪽 아래 속성창에

이런식으로 나온다.저 부분을 커넥션 스트링에다가 그냥 대입하면 된다.
문자열을 어떻게 넣어야될지 몰라서 고생했다면... 이렇게 하는것도 좋을듯... 한참고생했네

/**처음에 썼다가 안되서 이것저것 덕지덕지 붙여가지고 소스가 너무 더러워졌다. 엄청난 노가다 소스를 제작했다가 실패한부분
                ////SQL입력,.. 입력할게 너무 많아서 이걸로 못해먹겠다 해결방법은 스트링에 반복문 합체하기로 해서 입력하면 될듯하다.
                string cnStr ="Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                string connectionString =//"Source=localhost;Initial Catalog=StockPrice;Persist Security Info=True;User ID=아이디;Password=비번";
                    "Data Source=MSSQLSERVER; Integrated Security=SSPI;Initial Catalog=StockPrice;connection timeout=5";
                    /** "user id=아이디;" +
                                       "password=비밀번호;
server=localhost;" +
                                       "Trusted_Connection=yes;" +
                                       "database=StockPrice; " +
                                       "connection timeout=5";**/
                // Create a connection string via the builder object.
                /**
                SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder();
                cnStrBuilder.InitialCatalog = "StockPrice";
                cnStrBuilder.DataSource = "localhost";
                cnStrBuilder.ConnectTimeout = 10;
                cnStrBuilder.IntegratedSecurity = true;
                **/
                string connectionString = "Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                SqlConnection sqlCn = new SqlConnection();

                sqlCn = new SqlConnection();
                sqlCn.ConnectionString = connectionString;
                //sqlCn.ConnectionString = cnStrBuilder.ConnectionString;
                sqlCn.Open();

                // Format and execute SQL statement.
                string sql = string.Format("Insert Into FutureHoga" +
                  "(date, hotime, sametime, futcode, offerho1, offerho2, offerho3, offerho4, offerho5, bidho1, bidho2, bidho3, bidho4, bidho5, offerrem1, offerrem2, offerrem3, offerrem4, offerrem5, bidrem1, bidrem2, bidrem3, bidrem4, bidrem5, offercnt1,offercnt2,offercnt3,offercnt4,offercnt5, bidcnt1,bidcnt2,bidcnt3,bidcnt4,bidcnt5,totofferrem,totofferrem,totoffercnt,totobidcnt" +
                  "('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}', '{19}', '{20}', '{21}', '{22}', '{23}', '{24}', '{25}', '{26}', '{27}', '{28}', '{29}', '{30}', '{31}', '{32}', '{33}', '{34}', '{35}', '{36}', '{37}', '{38}')",
                  DateTime.Now.Date,
                  m_RealFH0[i].GetFieldData("OutBlock", "hotime"),
                                     (sametime++),
                                     m_RealFH0[i].GetFieldData("OutBlock", "futcode"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totoffercnt"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totobidcnt"));

                // Execute using our connection.
                using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))
                {
                    cmd.ExecuteNonQuery();
                }
                sqlCn.Close();//SQL닫기

C# Stream - FileStream, MemoryStream, NetworkStream, GZipStream

스트림의 종류들

FileStream
Close()
Read()
Seek()
Write()
MemoryStream
Close()
Read()
Seek()
Write()
NetworkStream
Close()
Read()
Seek()
Write()
GZipStream
Close()
Read()
Seek()
Write()

FileStream은 바이트 형태로 파일을 작성
문자열을 바이트 배열로 변환해야함
마지막에 파일을 닫아주지 않으면 다른 프로그램이 파일을 사용하지 못함

StreamWriter의 Write()와 WriteLIne()메소드를 호출해서 해겨

StreamWriter사용예

StreamWrite sw= new StreamWriter(@"C:\filename.txt"); //쓰기스트림
StreamReader sr = new StreamReader(@"C:\readfile.txt"); //읽기스트림
sw.WriteLine("쓰고싶은말들");
sw.Write("jlasdjlksdf");
sw.WriteLine("사과는 #{0} 껌은#{1}", apple, gum);
sw.Close();//sw닫기
sr.Close();//sr닫기
//닫는거 잘 확인해야됨

CryptoStream //스트림을 암호화하는 기능.. 암호화해서 다른 스트림으로 전송하는데 사용
Close()
Read()
Seek()
Write()

name space System;
public inerface IDisposable();
void Despose();

-BinaryReader

[C#] 배열 LIST 열거형 컬렉션

List 인스턴스 생성

List  peoples = new List();
string[] name = new string[NUM];

배열은 길이를 미리 알아야되고뭐 이래저래 쓰기 불편한데...
List는 편하게 쓸 수 있다.<people>이라고 선언을 했으이 이 List에서는 people만 쓸 수 있다. 
 

peoples.Add(new people());//이런식으로선언
/////////////////////////////
//아이템추가
people x = new people();
peoples.Add(x);
//////////////아이템한개 더 추가
people y = new people();
peoples.Add(y);
////아이템이 몇 개 있는지 확인
int peolecount = peoples.Count;
//특정아이템 확인
bool Isin = people.IndexOf(y);
//리스트 용량확인
int limit = people.Capacity;
//리스트 특저앙이템 제거
people.Remove(y);

비슷하긴한데 기록이 좀 틀린 것 같으니... 나중에 확인수정...

Sort()매서드는 List를 쉽게 정리하는 알고리즘 제공
CompareTo()는 객체를 비교하는 알고리즘
ICompare

enum

[펌]C# DateTime함수 기능들 설명 스케쥴

class ReadFromFile

// 프로그램 시작시간
DateTime startTime = DateTime.Now;

// 1. 현재시간
DateTime now;
now = DateTime.Now;

Console.WriteLine(now); // 현재시간 전체
Console.WriteLine(now.Year); // 현재 년도
Console.WriteLine(now.Month); // 현재 달
Console.WriteLine(now.Day); // 현재 일
Console.WriteLine(now.DayOfWeek); // 현재 주
Console.WriteLine(now.DayOfYear); // 1년중 몇일째인지
Console.WriteLine(now.TimeOfDay); // 금일 자정부터 몇시간
Console.WriteLine(now.Hour); // 시간
Console.WriteLine(now.Minute); // 분
Console.WriteLine(now.Second); // 초
Console.WriteLine(now.Millisecond); // 1000분의 1초

Console.WriteLine(now.Ticks); // 1000분의 1초

// 2. 임의시간 설정
DateTime birthday;
birthday = DateTime.Parse("2009년8월9일"); // 시분초 미지정시 자정으로
birthday = DateTime.Parse("2009/08/09");

Console.WriteLine(birthday);

DateTime xmas;
xmas = new DateTime(2008, 12, 25, 0, 0, 0);

Console.WriteLine(xmas);

// 3. 연산

// 3.1 오늘 + 100일
now = DateTime.Now;
DateTime result = now.AddDays(100); // 각 단위별 add메소드가 존재 MSDN참고

Console.WriteLine(result);

// 3.2 크리스마스까지 남은 날
TimeSpan result2 = xmas - now;
Console.WriteLine(result2);
Console.WriteLine(result2.Days); // NNN일 (내림표현)
Console.WriteLine(result2.TotalDays); // NNN.NNNNNNN일 (더정확)

// 3.3 오늘 - 100일
Console.WriteLine(now - TimeSpan.FromDays(100));
Console.WriteLine(now.AddDays(-100));

// 4. 날짜시간 출력형식 지정
Console.WriteLine(now.ToLocalTime()); // 2008-08-08 오전 10:31:25

Console.WriteLine(now.ToLongDateString()); // 2008년 8월 8일 금요일
Console.WriteLine(now.ToShortDateString()); // 2008-08-08

Console.WriteLine(now.ToLongTimeString()); // 오전 10:31:25
Console.WriteLine(now.ToShortTimeString()); // 오전 10:31

// 프로그램 종료시간
DateTime endTime = DateTime.Now;

Console.WriteLine("프로그램 수행시간 : {0}/ms", (double)(endTime - startTime).Ticks / 1000000.0F);



[펌]C#, MSDN, 파일읽어서 한줄씩 출력하는 함수, 배열로 한줄씩 읽음

class ReadFromFile
{
static void Main()
{
// The files used here were created in the code example
// in How to: Write to a Text File. You can of course substitute
// other files of your own.

// Example #1
// Read the file as one string.
string text = System.IO.File.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");

// Display the file contents to the console.
System.Console.WriteLine("Contents of writeText.txt = {0}", text);

// Example #2
// Read the file lines into a string array.
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Public\TestFolder\WriteLines2.txt");

System.Console.WriteLine("Contents of writeLines2.txt =:");
foreach (string line in lines)
{
Console.WriteLine("\t" + line);
}

// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}


msdn이 없던 시절에는 어떻게 프로그램을 짰을까... 함수도 없고.. ㅠ
파일입출력함수인데 여러모로 쓸모가 많다.
배열로 한줄한줄씩 출력해줘서 쓰기도 편하고
우리나라 C#인구가 많지 않아서인지...
한국웹에 는 내가 검색한거랑 비슷한 관련검색이 많았는데... 쓸만한게없었는데...

역시 msdn.... 영어의 압박만 이겨내면 정말 좋긴 좋다.

c#이 간단한거만들기는 정말 편한 것 같다. 베이직처럼 엑셀과 연계가 잘되지는 않는게 좀 아쉽기는 하지만....
이거 잘 배워두면 윈도폰 나오면 바로 앱도 만들 수 있고.. 나름 쓸모있다.

[펌]C++ import 에러 발생상황

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=5779&ref=5779


stdafx.h 에 #import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace

하고 컴파일을 시키게 되면 아래와 같은 에러가 발생합니다.

d:\project\real\windows\metran\debug\msado15.tlh(1317) : error C2629: unexpected 'short ('
d:\project\real\windows\metran\debug\msado15.tlh(1317) : error C2238: unexpected token(s) preceding ';'

이것은 EOF 와 ADOEOF 간의 name 충돌에 의한 현상이라고 하더군요..

해결하기 위해서는 아래와 같이 EOF의 충돌을 방지하기 위해 adoEOF나 ADOEOF 등과 같이 누가 보아도 알기 쉽게 바꾸어주시면 좋겠죠..

참고적으로 KSEOF(제 이름 이니셜에다가.. --;) 이런식으로 해주시면 코딩해놓고 욕먹습니다.

가급적이면 자기만 알 수 있는 코딩은 안하는게 좋겠죠.. ^^;

#import "c:\Program Files\Common Files\System\ADO\msado15.dll"  no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")

이런식으로 하게 되면 EOF 간의 name 충돌은 없어지게 됩니다.

c# file i/o 샘플

 
using System;
using System.IO;

class WriteTextFile
{
    static void Main()
    {
        
        // These examples assume a "C:\Users\Public\TestFolder" folder on your machine.
        // You can modify the path if necessary.

        // Example #1: Write an array of strings to a file.
        // Create a string array that consists of three lines.
        string[] lines = { "First line", "Second line", "Third line" };
        System.IO.File.WriteAllLines(@"C:\price\WriteLines.txt", lines);
        
        
        // Example #2: Write one string to a text file.
        string text = "A class is the most powerful data type in C#. Like structures, " +
                       "a class defines the data and behavior of the data type. ";
        System.IO.File.WriteAllText(@"C:\price\WriteText.txt", text);
        
        // Example #3: Write only some strings in an array to a file.
        using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\price\WriteLines2.txt"))
        {
            foreach (string line in lines)
            {
                if (line.Contains("Second") == false)
                {
                    file.WriteLine(line);
                }
            }
        }

        // Example #4: Append new text to an existing file
        using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\price\WriteLines2.txt", true))
        {
            file.WriteLine("Fourth line");
        }
        
    }
}
/* Output (to WriteLines.txt):
    First line
    Second line
    Third line

 Output (to WriteText.txt):
    A class is the most powerful data type in C#. Like structures, a class defines the data and behavior of the data type.

 Output to WriteLines2.txt after Example #3:
    First line
    Third line

 Output to WriteLines2.txt after Example #4:
    First line
    Third line
    Fourth line
 */