วิธีรับค่าจำนวนเต็มของวันในสัปดาห์


105

ฉันจะรับวันในสัปดาห์ในรูปแบบจำนวนเต็มได้อย่างไร ฉันรู้ว่า ToString จะส่งคืนเฉพาะสตริง

DateTime ClockInfoFromSystem = DateTime.Now;
int day1;
string day2;
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string

@ โจฉันไม่สามารถฟอร์แมตรหัสของเขาใหม่เพื่อวางรหัสของเขาในบล็อกรหัสทำไมถึงเป็นเช่นนั้น
uday

4
คุณโทรมาToString()ทำไมคุณถึงคาดหวังอะไรนอกจากสตริง?
Brian Rasmussen

@ เดฟฉันต้องแยกบรรทัดออกจากข้อความของคำถามไม่งั้นก็เยื้องรหัส ...
โจ

เย็น! ฉันพยายามทำให้รหัสของเขาเป็น codeblock และมันไม่อนุญาตให้ฉันทำ
uday

คำตอบ:


171

ใช้

day1 = (int)ClockInfoFromSystem.DayOfWeek;

2
มันจะกลับมาเป็น 0 สำหรับวันจันทร์เป็นต้น?
akshaykumar6

11
@developer วันอาทิตย์คือ 0. msdn.microsoft.com/en-us/library/system.dayofweek.aspx
Roy Goode

45
หากคุณต้องการให้วันจันทร์เป็น 0 เพียงแค่เปลี่ยนวัน:day1 = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7
Kevin Gosse

3
หากคุณต้องการให้เร็วขึ้นลองดูที่: stackoverflow.com/a/22278311/3315914
rpax

82
int day = (int)DateTime.Now.DayOfWeek;

วันแรกของสัปดาห์: วันอาทิตย์ (มีค่าเป็นศูนย์)


65

หากคุณต้องการตั้งวันแรกของสัปดาห์เป็นวันจันทร์ด้วยค่าจำนวนเต็ม 1 และวันอาทิตย์ด้วยค่าจำนวนเต็ม 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;

9
โหวตขึ้นเพราะคนมีสติทุกคนต้องการสิ่งนี้ ISO 8601 ค่อนข้างชัดเจนในประเด็นนี้ วันจันทร์คือวันที่ 1 วันอาทิตย์คือวันที่ 7
Morvael

ไม่ปล่อยคุณสมบัติ DayOfWeek จะส่งคืนศูนย์ในวันอาทิตย์ เกือบจะนำเสนอข้อบกพร่องโดยใช้คำตอบที่ได้รับการโหวตสูงสุด ขอบคุณ!
Breez

6
day1= (int)ClockInfoFromSystem.DayOfWeek;

@JustinSatyr - FiveTools ชัดเจนเพียงแค่ให้ตัวอย่าง ไม่ใช่ความผิดของเขาผู้เขียนพยายามตั้งค่า String เป็นตัวแปรจำนวนเต็ม
Security Hound

@ Ramhound: ฉันไม่ได้ลงคะแนนและฉันไม่ได้วิจารณ์ ฉันคิดว่าเขาอ่านรหัสผิด และเห็นได้ชัดว่าฉันถูกต้องจากข้อเท็จจริงที่ว่าเขาแก้ไขรหัสของเขา
Devin Burke


3

วิธีที่ถูกต้องในการรับค่าจำนวนเต็มของ Enum เช่น DayOfWeek เป็นสตริงคือ:

DayOfWeek.ToString("d")

4
สิ่งนี้จะส่งคืน a stringไม่ใช่int.
Danny Beckett

นี่คือวันของเดือนไม่ใช่วันในสัปดาห์
Fritz

@Fritz ไม่มันไม่ใช่จำนวนเต็ม enum "as a string" อย่างที่บอก คุณกำลังสับสนกับการจัดรูปแบบวันที่ซึ่งไม่ใช่
Rob Sedgwick

3

อีกวิธีหนึ่งในการรับวันจันทร์ที่มีค่าจำนวนเต็ม 1 และวันอาทิตย์ด้วยค่าจำนวนเต็ม 7

int วัน = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;


0

คำตอบที่ถูกต้องเป็นคำตอบที่ถูกต้องในการรับค่า int

แต่ถ้าคุณแค่ตรวจสอบให้แน่ใจว่าเป็นวันอาทิตย์เช่น ... ลองใช้โค้ดต่อไปนี้แทนการแคสต์เป็น int สิ่งนี้ให้ความสะดวกในการอ่านมากขึ้น

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.