Your syntax isn't quite right.
First, you don't need to "tell" anything. Leave the "tell" and "end tell" off. Dates are not specific to any particular app so you don't need to "tell." This may be the entire problem.
Second, if you do something like this:
set a to current date
You will get a result like this (not exactly like this, because it is particular to your date and time preferences):
date "Tuesday, April 12, 2016 at 10:39:44 AM"
That's the "result" of the one-line script above. Notice the commas.
Your script where you set "b" does not include commas and that may be where it goes wrong. I think if you run a one-line script like I showed above you will see the proper syntax. Once you see it, you can change your string in the line where you set b to match the syntax the system expects. If you are using the proper syntax (that is, matching what you get when you ask for current date) then your problem is exclusively that you've wrapped your date commands in the "tell" block, and the app you're "telling" doesn't understand how to do it. Leave the "tell" wrapper off. Get your date stuff done outside of that. Your date "b" will still work later on in your script, in a tell block. But you have to do your date work outside of a tell block.
do shell script date ...
where...
is properly formatted information thedate
command expects.