In your code you show the following:
DateTimeFormatInfo info = new DateTimeFormatInfo();
string str = info.ShortTimePattern + " tt";
When you get the ShortTimePattern it is returning HH:mm (HH = 24 hour format, we need it to be hh which is 12 hour format) and then you append ‘tt’ to it to get the am/pm. Then you get the culture from the scheduler. The culture is then applied in the ToString using the datetime format that was created in the code above. In doing so the only effect the culture has on the formatted output is setting the correct am/pm for that culture, not the 12 hour time format since that is what we are trying to change.
I am sure you have good reason for the code above, but I don’t understand why you couldn’t have used the ShortTimePattern from the culture instead of the new DateTimeFormatInfo. If you did we could easily modify the culture and pass it into the scheduler and everything would work great, but the way you are currently doing this I don’t see any way of changing the ShortTimePattern. Is there any way of doing this? Could you please show us an example that works?