How to get week start date and end date by using any Month and week number swift 3?












1














I have to implement graph so that I need to get week start date and weekend date if I will pass the date object and week number.



How can I achieve that I tried it but didn't get exactly?



Here below is my code:-



Weekday:-



//Day of week
func getDayOfWeek(today:String)->Int? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let todayDate = formatter.date(from: today) {
let myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let myComponents = myCalendar.components(.weekday, from: todayDate)
let weekDay = myComponents.weekday
return weekDay
} else {
return nil
}
}.

extension Date {
var millisecondsSince1970:Int {
return Int((self.timeIntervalSince1970 * 1000.0).rounded())
}

init(milliseconds:Int) {
self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
}

func startOfWeek(weekday: Int?) -> Date {
var cal = Calendar.current
var component = cal.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)
component.to12am()
cal.firstWeekday = weekday ?? 1
return cal.date(from: component)!
}

func endOfWeek(weekday: Int) -> Date {
let cal = Calendar.current
var component = DateComponents()
component.weekOfYear = 1
component.day = -1
component.to12pm()
return cal.date(byAdding: component, to: startOfWeek(weekday: weekday))!
}
}

internal extension DateComponents {
mutating func to12am() {
self.hour = 0
self.minute = 0
self.second = 0
}

mutating func to12pm(){
self.hour = 23
self.minute = 59
self.second = 59
}
}









share|improve this question
























  • Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
    – BadCodeDeveloper
    Jun 29 '17 at 7:16












  • This is telling start of week but I have week number and date also. Thanks
    – kishor0011
    Jun 29 '17 at 7:23










  • @kishor0011 Give some minimal example of what you want
    – Nirav D
    Jun 29 '17 at 7:24










  • If you have a date, a "week number" is not necessary.
    – Mundi
    Jun 29 '17 at 7:24










  • How I will get to know 3rd week start date and end Date? Thanks
    – kishor0011
    Jun 29 '17 at 7:27
















1














I have to implement graph so that I need to get week start date and weekend date if I will pass the date object and week number.



How can I achieve that I tried it but didn't get exactly?



Here below is my code:-



Weekday:-



//Day of week
func getDayOfWeek(today:String)->Int? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let todayDate = formatter.date(from: today) {
let myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let myComponents = myCalendar.components(.weekday, from: todayDate)
let weekDay = myComponents.weekday
return weekDay
} else {
return nil
}
}.

extension Date {
var millisecondsSince1970:Int {
return Int((self.timeIntervalSince1970 * 1000.0).rounded())
}

init(milliseconds:Int) {
self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
}

func startOfWeek(weekday: Int?) -> Date {
var cal = Calendar.current
var component = cal.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)
component.to12am()
cal.firstWeekday = weekday ?? 1
return cal.date(from: component)!
}

func endOfWeek(weekday: Int) -> Date {
let cal = Calendar.current
var component = DateComponents()
component.weekOfYear = 1
component.day = -1
component.to12pm()
return cal.date(byAdding: component, to: startOfWeek(weekday: weekday))!
}
}

internal extension DateComponents {
mutating func to12am() {
self.hour = 0
self.minute = 0
self.second = 0
}

mutating func to12pm(){
self.hour = 23
self.minute = 59
self.second = 59
}
}









share|improve this question
























  • Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
    – BadCodeDeveloper
    Jun 29 '17 at 7:16












  • This is telling start of week but I have week number and date also. Thanks
    – kishor0011
    Jun 29 '17 at 7:23










  • @kishor0011 Give some minimal example of what you want
    – Nirav D
    Jun 29 '17 at 7:24










  • If you have a date, a "week number" is not necessary.
    – Mundi
    Jun 29 '17 at 7:24










  • How I will get to know 3rd week start date and end Date? Thanks
    – kishor0011
    Jun 29 '17 at 7:27














1












1








1


2





I have to implement graph so that I need to get week start date and weekend date if I will pass the date object and week number.



How can I achieve that I tried it but didn't get exactly?



Here below is my code:-



Weekday:-



//Day of week
func getDayOfWeek(today:String)->Int? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let todayDate = formatter.date(from: today) {
let myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let myComponents = myCalendar.components(.weekday, from: todayDate)
let weekDay = myComponents.weekday
return weekDay
} else {
return nil
}
}.

extension Date {
var millisecondsSince1970:Int {
return Int((self.timeIntervalSince1970 * 1000.0).rounded())
}

init(milliseconds:Int) {
self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
}

func startOfWeek(weekday: Int?) -> Date {
var cal = Calendar.current
var component = cal.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)
component.to12am()
cal.firstWeekday = weekday ?? 1
return cal.date(from: component)!
}

func endOfWeek(weekday: Int) -> Date {
let cal = Calendar.current
var component = DateComponents()
component.weekOfYear = 1
component.day = -1
component.to12pm()
return cal.date(byAdding: component, to: startOfWeek(weekday: weekday))!
}
}

internal extension DateComponents {
mutating func to12am() {
self.hour = 0
self.minute = 0
self.second = 0
}

mutating func to12pm(){
self.hour = 23
self.minute = 59
self.second = 59
}
}









share|improve this question















I have to implement graph so that I need to get week start date and weekend date if I will pass the date object and week number.



How can I achieve that I tried it but didn't get exactly?



Here below is my code:-



Weekday:-



//Day of week
func getDayOfWeek(today:String)->Int? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
if let todayDate = formatter.date(from: today) {
let myCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)!
let myComponents = myCalendar.components(.weekday, from: todayDate)
let weekDay = myComponents.weekday
return weekDay
} else {
return nil
}
}.

extension Date {
var millisecondsSince1970:Int {
return Int((self.timeIntervalSince1970 * 1000.0).rounded())
}

init(milliseconds:Int) {
self = Date(timeIntervalSince1970: TimeInterval(milliseconds / 1000))
}

func startOfWeek(weekday: Int?) -> Date {
var cal = Calendar.current
var component = cal.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)
component.to12am()
cal.firstWeekday = weekday ?? 1
return cal.date(from: component)!
}

func endOfWeek(weekday: Int) -> Date {
let cal = Calendar.current
var component = DateComponents()
component.weekOfYear = 1
component.day = -1
component.to12pm()
return cal.date(byAdding: component, to: startOfWeek(weekday: weekday))!
}
}

internal extension DateComponents {
mutating func to12am() {
self.hour = 0
self.minute = 0
self.second = 0
}

mutating func to12pm(){
self.hour = 23
self.minute = 59
self.second = 59
}
}






ios swift nsdate






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jun 29 '17 at 8:29

























asked Jun 29 '17 at 7:09









kishor0011

45611029




45611029












  • Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
    – BadCodeDeveloper
    Jun 29 '17 at 7:16












  • This is telling start of week but I have week number and date also. Thanks
    – kishor0011
    Jun 29 '17 at 7:23










  • @kishor0011 Give some minimal example of what you want
    – Nirav D
    Jun 29 '17 at 7:24










  • If you have a date, a "week number" is not necessary.
    – Mundi
    Jun 29 '17 at 7:24










  • How I will get to know 3rd week start date and end Date? Thanks
    – kishor0011
    Jun 29 '17 at 7:27


















  • Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
    – BadCodeDeveloper
    Jun 29 '17 at 7:16












  • This is telling start of week but I have week number and date also. Thanks
    – kishor0011
    Jun 29 '17 at 7:23










  • @kishor0011 Give some minimal example of what you want
    – Nirav D
    Jun 29 '17 at 7:24










  • If you have a date, a "week number" is not necessary.
    – Mundi
    Jun 29 '17 at 7:24










  • How I will get to know 3rd week start date and end Date? Thanks
    – kishor0011
    Jun 29 '17 at 7:27
















Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
– BadCodeDeveloper
Jun 29 '17 at 7:16






Check the accepted answer here to get first day of the week: stackoverflow.com/questions/35687411/…. Then you can calculate the last day
– BadCodeDeveloper
Jun 29 '17 at 7:16














This is telling start of week but I have week number and date also. Thanks
– kishor0011
Jun 29 '17 at 7:23




This is telling start of week but I have week number and date also. Thanks
– kishor0011
Jun 29 '17 at 7:23












@kishor0011 Give some minimal example of what you want
– Nirav D
Jun 29 '17 at 7:24




@kishor0011 Give some minimal example of what you want
– Nirav D
Jun 29 '17 at 7:24












If you have a date, a "week number" is not necessary.
– Mundi
Jun 29 '17 at 7:24




If you have a date, a "week number" is not necessary.
– Mundi
Jun 29 '17 at 7:24












How I will get to know 3rd week start date and end Date? Thanks
– kishor0011
Jun 29 '17 at 7:27




How I will get to know 3rd week start date and end Date? Thanks
– kishor0011
Jun 29 '17 at 7:27












2 Answers
2






active

oldest

votes


















3














This returns start- and end date for a given week number and date



func dayRangeOf(weekOfYear: Int, for date: Date) -> Range<Date>
{
let calendar = Calendar.current
let year = calendar.component(.yearForWeekOfYear, from: date)
let startComponents = DateComponents(weekOfYear: weekOfYear, yearForWeekOfYear: year)
let startDate = calendar.date(from: startComponents)!
let endComponents = DateComponents(day:7, second: -1)
let endDate = calendar.date(byAdding: endComponents, to: startDate)!
return startDate..<endDate
}

print(dayRangeOf(weekOfYear: 12, for: Date()))


Consider that print displays the dates in UTC and the start date depends on the first weekday setting of the current locale.



Edit



A version to determine the range of a given week of month



func dayRangeOf(weekOfMonth: Int, year: Int, month: Int) -> Range<Date>? {
let calendar = Calendar.current
guard let startOfMonth = calendar.date(from: DateComponents(year:year, month:month)) else { return nil }
var startDate = Date()
if weekOfMonth == 1 {
var interval = TimeInterval()
guard calendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: startOfMonth) else { return nil }
} else {
let nextComponents = DateComponents(year: year, month: month, weekOfMonth: weekOfMonth)
guard let weekStartDate = calendar.nextDate(after: startOfMonth, matching: nextComponents, matchingPolicy: .nextTime) else {
return nil
}
startDate = weekStartDate
}
let endComponents = DateComponents(day:7, second: -1)
let endDate = calendar.date(byAdding: endComponents, to: startDate)!
return startDate..<endDate
}

print(dayRangeOf(weekOfMonth: 5, year: 2017, month: 6))


The result type of the second version is an optional because there are a few calculations which could fail for example if the number of week in the particular month is out of range.






share|improve this answer























  • Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
    – Martin R
    Jun 29 '17 at 8:07










  • Yes, it should, thanks.
    – vadian
    Jun 29 '17 at 8:09










  • Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
    – kishor0011
    Jun 29 '17 at 8:32










  • Like this any number of week and any number of month. Thanks
    – kishor0011
    Jun 29 '17 at 8:33










  • That is for year. I want to for month is there any change I can do? Thanks
    – kishor0011
    Jun 29 '17 at 9:01



















0














For anyone interested in this, it looks like OP confusing weekOfMonth and weekOfYear…



//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

let cal = Calendar.current


let dateComponents = DateComponents(year: 2018, month: 3, day: 15)
let date = cal.date(from: dateComponents)!

func weekOfMonthStart(forDate date: Date) -> Date {
var compsToWeekOfMonth = cal.dateComponents([.year, .month, .weekOfYear], from: date)
compsToWeekOfMonth.day = cal.range(of: .day, in: .weekOfMonth, for: date)?.lowerBound
return cal.date(from: compsToWeekOfMonth)!
}


Somebody mention an answer that will fail, so a test was included ;)



for i in 0...5000 {
let newDate = cal.date(byAdding: DateComponents(day:i), to: date)!
weekOfMonthStart(forDate: newDate)
}





share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44818517%2fhow-to-get-week-start-date-and-end-date-by-using-any-month-and-week-number-swift%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    This returns start- and end date for a given week number and date



    func dayRangeOf(weekOfYear: Int, for date: Date) -> Range<Date>
    {
    let calendar = Calendar.current
    let year = calendar.component(.yearForWeekOfYear, from: date)
    let startComponents = DateComponents(weekOfYear: weekOfYear, yearForWeekOfYear: year)
    let startDate = calendar.date(from: startComponents)!
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfYear: 12, for: Date()))


    Consider that print displays the dates in UTC and the start date depends on the first weekday setting of the current locale.



    Edit



    A version to determine the range of a given week of month



    func dayRangeOf(weekOfMonth: Int, year: Int, month: Int) -> Range<Date>? {
    let calendar = Calendar.current
    guard let startOfMonth = calendar.date(from: DateComponents(year:year, month:month)) else { return nil }
    var startDate = Date()
    if weekOfMonth == 1 {
    var interval = TimeInterval()
    guard calendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: startOfMonth) else { return nil }
    } else {
    let nextComponents = DateComponents(year: year, month: month, weekOfMonth: weekOfMonth)
    guard let weekStartDate = calendar.nextDate(after: startOfMonth, matching: nextComponents, matchingPolicy: .nextTime) else {
    return nil
    }
    startDate = weekStartDate
    }
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfMonth: 5, year: 2017, month: 6))


    The result type of the second version is an optional because there are a few calculations which could fail for example if the number of week in the particular month is out of range.






    share|improve this answer























    • Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
      – Martin R
      Jun 29 '17 at 8:07










    • Yes, it should, thanks.
      – vadian
      Jun 29 '17 at 8:09










    • Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
      – kishor0011
      Jun 29 '17 at 8:32










    • Like this any number of week and any number of month. Thanks
      – kishor0011
      Jun 29 '17 at 8:33










    • That is for year. I want to for month is there any change I can do? Thanks
      – kishor0011
      Jun 29 '17 at 9:01
















    3














    This returns start- and end date for a given week number and date



    func dayRangeOf(weekOfYear: Int, for date: Date) -> Range<Date>
    {
    let calendar = Calendar.current
    let year = calendar.component(.yearForWeekOfYear, from: date)
    let startComponents = DateComponents(weekOfYear: weekOfYear, yearForWeekOfYear: year)
    let startDate = calendar.date(from: startComponents)!
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfYear: 12, for: Date()))


    Consider that print displays the dates in UTC and the start date depends on the first weekday setting of the current locale.



    Edit



    A version to determine the range of a given week of month



    func dayRangeOf(weekOfMonth: Int, year: Int, month: Int) -> Range<Date>? {
    let calendar = Calendar.current
    guard let startOfMonth = calendar.date(from: DateComponents(year:year, month:month)) else { return nil }
    var startDate = Date()
    if weekOfMonth == 1 {
    var interval = TimeInterval()
    guard calendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: startOfMonth) else { return nil }
    } else {
    let nextComponents = DateComponents(year: year, month: month, weekOfMonth: weekOfMonth)
    guard let weekStartDate = calendar.nextDate(after: startOfMonth, matching: nextComponents, matchingPolicy: .nextTime) else {
    return nil
    }
    startDate = weekStartDate
    }
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfMonth: 5, year: 2017, month: 6))


    The result type of the second version is an optional because there are a few calculations which could fail for example if the number of week in the particular month is out of range.






    share|improve this answer























    • Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
      – Martin R
      Jun 29 '17 at 8:07










    • Yes, it should, thanks.
      – vadian
      Jun 29 '17 at 8:09










    • Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
      – kishor0011
      Jun 29 '17 at 8:32










    • Like this any number of week and any number of month. Thanks
      – kishor0011
      Jun 29 '17 at 8:33










    • That is for year. I want to for month is there any change I can do? Thanks
      – kishor0011
      Jun 29 '17 at 9:01














    3












    3








    3






    This returns start- and end date for a given week number and date



    func dayRangeOf(weekOfYear: Int, for date: Date) -> Range<Date>
    {
    let calendar = Calendar.current
    let year = calendar.component(.yearForWeekOfYear, from: date)
    let startComponents = DateComponents(weekOfYear: weekOfYear, yearForWeekOfYear: year)
    let startDate = calendar.date(from: startComponents)!
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfYear: 12, for: Date()))


    Consider that print displays the dates in UTC and the start date depends on the first weekday setting of the current locale.



    Edit



    A version to determine the range of a given week of month



    func dayRangeOf(weekOfMonth: Int, year: Int, month: Int) -> Range<Date>? {
    let calendar = Calendar.current
    guard let startOfMonth = calendar.date(from: DateComponents(year:year, month:month)) else { return nil }
    var startDate = Date()
    if weekOfMonth == 1 {
    var interval = TimeInterval()
    guard calendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: startOfMonth) else { return nil }
    } else {
    let nextComponents = DateComponents(year: year, month: month, weekOfMonth: weekOfMonth)
    guard let weekStartDate = calendar.nextDate(after: startOfMonth, matching: nextComponents, matchingPolicy: .nextTime) else {
    return nil
    }
    startDate = weekStartDate
    }
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfMonth: 5, year: 2017, month: 6))


    The result type of the second version is an optional because there are a few calculations which could fail for example if the number of week in the particular month is out of range.






    share|improve this answer














    This returns start- and end date for a given week number and date



    func dayRangeOf(weekOfYear: Int, for date: Date) -> Range<Date>
    {
    let calendar = Calendar.current
    let year = calendar.component(.yearForWeekOfYear, from: date)
    let startComponents = DateComponents(weekOfYear: weekOfYear, yearForWeekOfYear: year)
    let startDate = calendar.date(from: startComponents)!
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfYear: 12, for: Date()))


    Consider that print displays the dates in UTC and the start date depends on the first weekday setting of the current locale.



    Edit



    A version to determine the range of a given week of month



    func dayRangeOf(weekOfMonth: Int, year: Int, month: Int) -> Range<Date>? {
    let calendar = Calendar.current
    guard let startOfMonth = calendar.date(from: DateComponents(year:year, month:month)) else { return nil }
    var startDate = Date()
    if weekOfMonth == 1 {
    var interval = TimeInterval()
    guard calendar.dateInterval(of: .weekOfMonth, start: &startDate, interval: &interval, for: startOfMonth) else { return nil }
    } else {
    let nextComponents = DateComponents(year: year, month: month, weekOfMonth: weekOfMonth)
    guard let weekStartDate = calendar.nextDate(after: startOfMonth, matching: nextComponents, matchingPolicy: .nextTime) else {
    return nil
    }
    startDate = weekStartDate
    }
    let endComponents = DateComponents(day:7, second: -1)
    let endDate = calendar.date(byAdding: endComponents, to: startDate)!
    return startDate..<endDate
    }

    print(dayRangeOf(weekOfMonth: 5, year: 2017, month: 6))


    The result type of the second version is an optional because there are a few calculations which could fail for example if the number of week in the particular month is out of range.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Jun 30 '17 at 13:55

























    answered Jun 29 '17 at 8:01









    vadian

    143k13154170




    143k13154170












    • Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
      – Martin R
      Jun 29 '17 at 8:07










    • Yes, it should, thanks.
      – vadian
      Jun 29 '17 at 8:09










    • Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
      – kishor0011
      Jun 29 '17 at 8:32










    • Like this any number of week and any number of month. Thanks
      – kishor0011
      Jun 29 '17 at 8:33










    • That is for year. I want to for month is there any change I can do? Thanks
      – kishor0011
      Jun 29 '17 at 9:01


















    • Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
      – Martin R
      Jun 29 '17 at 8:07










    • Yes, it should, thanks.
      – vadian
      Jun 29 '17 at 8:09










    • Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
      – kishor0011
      Jun 29 '17 at 8:32










    • Like this any number of week and any number of month. Thanks
      – kishor0011
      Jun 29 '17 at 8:33










    • That is for year. I want to for month is there any change I can do? Thanks
      – kishor0011
      Jun 29 '17 at 9:01
















    Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
    – Martin R
    Jun 29 '17 at 8:07




    Shouldn't it be year = calendar.component(.yearForWeekOfYear, from: date) ?
    – Martin R
    Jun 29 '17 at 8:07












    Yes, it should, thanks.
    – vadian
    Jun 29 '17 at 8:09




    Yes, it should, thanks.
    – vadian
    Jun 29 '17 at 8:09












    Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
    – kishor0011
    Jun 29 '17 at 8:32




    Ok Suppose this is 5th week of June . So I want to get 5th week start date and end date. If it is 4th week of June then I want to get 4th week start date and end date.
    – kishor0011
    Jun 29 '17 at 8:32












    Like this any number of week and any number of month. Thanks
    – kishor0011
    Jun 29 '17 at 8:33




    Like this any number of week and any number of month. Thanks
    – kishor0011
    Jun 29 '17 at 8:33












    That is for year. I want to for month is there any change I can do? Thanks
    – kishor0011
    Jun 29 '17 at 9:01




    That is for year. I want to for month is there any change I can do? Thanks
    – kishor0011
    Jun 29 '17 at 9:01













    0














    For anyone interested in this, it looks like OP confusing weekOfMonth and weekOfYear…



    //: Playground - noun: a place where people can play

    import UIKit

    var str = "Hello, playground"

    let cal = Calendar.current


    let dateComponents = DateComponents(year: 2018, month: 3, day: 15)
    let date = cal.date(from: dateComponents)!

    func weekOfMonthStart(forDate date: Date) -> Date {
    var compsToWeekOfMonth = cal.dateComponents([.year, .month, .weekOfYear], from: date)
    compsToWeekOfMonth.day = cal.range(of: .day, in: .weekOfMonth, for: date)?.lowerBound
    return cal.date(from: compsToWeekOfMonth)!
    }


    Somebody mention an answer that will fail, so a test was included ;)



    for i in 0...5000 {
    let newDate = cal.date(byAdding: DateComponents(day:i), to: date)!
    weekOfMonthStart(forDate: newDate)
    }





    share|improve this answer


























      0














      For anyone interested in this, it looks like OP confusing weekOfMonth and weekOfYear…



      //: Playground - noun: a place where people can play

      import UIKit

      var str = "Hello, playground"

      let cal = Calendar.current


      let dateComponents = DateComponents(year: 2018, month: 3, day: 15)
      let date = cal.date(from: dateComponents)!

      func weekOfMonthStart(forDate date: Date) -> Date {
      var compsToWeekOfMonth = cal.dateComponents([.year, .month, .weekOfYear], from: date)
      compsToWeekOfMonth.day = cal.range(of: .day, in: .weekOfMonth, for: date)?.lowerBound
      return cal.date(from: compsToWeekOfMonth)!
      }


      Somebody mention an answer that will fail, so a test was included ;)



      for i in 0...5000 {
      let newDate = cal.date(byAdding: DateComponents(day:i), to: date)!
      weekOfMonthStart(forDate: newDate)
      }





      share|improve this answer
























        0












        0








        0






        For anyone interested in this, it looks like OP confusing weekOfMonth and weekOfYear…



        //: Playground - noun: a place where people can play

        import UIKit

        var str = "Hello, playground"

        let cal = Calendar.current


        let dateComponents = DateComponents(year: 2018, month: 3, day: 15)
        let date = cal.date(from: dateComponents)!

        func weekOfMonthStart(forDate date: Date) -> Date {
        var compsToWeekOfMonth = cal.dateComponents([.year, .month, .weekOfYear], from: date)
        compsToWeekOfMonth.day = cal.range(of: .day, in: .weekOfMonth, for: date)?.lowerBound
        return cal.date(from: compsToWeekOfMonth)!
        }


        Somebody mention an answer that will fail, so a test was included ;)



        for i in 0...5000 {
        let newDate = cal.date(byAdding: DateComponents(day:i), to: date)!
        weekOfMonthStart(forDate: newDate)
        }





        share|improve this answer












        For anyone interested in this, it looks like OP confusing weekOfMonth and weekOfYear…



        //: Playground - noun: a place where people can play

        import UIKit

        var str = "Hello, playground"

        let cal = Calendar.current


        let dateComponents = DateComponents(year: 2018, month: 3, day: 15)
        let date = cal.date(from: dateComponents)!

        func weekOfMonthStart(forDate date: Date) -> Date {
        var compsToWeekOfMonth = cal.dateComponents([.year, .month, .weekOfYear], from: date)
        compsToWeekOfMonth.day = cal.range(of: .day, in: .weekOfMonth, for: date)?.lowerBound
        return cal.date(from: compsToWeekOfMonth)!
        }


        Somebody mention an answer that will fail, so a test was included ;)



        for i in 0...5000 {
        let newDate = cal.date(byAdding: DateComponents(day:i), to: date)!
        weekOfMonthStart(forDate: newDate)
        }






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 15 '18 at 19:12









        user9298721

        12




        12






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44818517%2fhow-to-get-week-start-date-and-end-date-by-using-any-month-and-week-number-swift%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python