Most of us know when the traditional planting date in our area is. Here in Alberta, most people put the garden in during the Victoria Day long weekend, or the third weekend in May. But depending on your location, the traditional date may not be the best date for you.
The first task is to determine your average last frost date, after which there is a 50% chance of not having any more frost. Different sources may list different dates for a single area, which can pose a challenge. Edmonton, for example, may have frost dates of May 10, May 12, or May 24, according to one source, depending on which weather station the information comes from. It is useful to note that the international airport, which is located outside of the city, has a significantly later date than the more urban locations, so urban gardeners can probably count on more frost-free days than a weather station out of town might indicate. You can, of course, collect your own weather data, but your averages probably won't be statistically helpful for about ten years (so start now, I guess). The Farmer's Almanac provides frost dates for most cities in Canada and the US.
Once you have determined your local last frost date, you need to decide how risk-averse you are. I, for example, would have very little trouble gambling on an early planting of bean seeds, but there's no way I would risk the tomato plants that I painstakingly raised from seed. The following graph (from Alberta Agriculture) will help you find the date that matches your risk tolerance:
This chart is easy to use. The Mean Date, labelled 0, is your last frost date. Follow the curve down to your desired risk factor (say, 15%), then add that number of days (12). As you can see, it also works for first frost dates in the fall. So if my average last frost date is May 10, then on Victoria Day, which is May 18th this year, I have only about 25% chance of frost. So in this case, the traditional planting day is probably about right for my tomatoes if I'm willing to cover them if I need to, but I'll probably try putting in a few beans before that.