There’s no such thing as perfect timing. There’s always going to be some kind of excuse popping up in your head to not do something or wait a little bit longer.
I’m going to be real with you for a second in telling you that you’re lying to yourself. If you make excuses, you’re just going to keep making excuses. You’re never going to do it if you keep waiting for the “perfect” moment because, and you must understand this, it doesn’t exist. It’s not the moment that has to be perfect for you to say or do something. It is you who has to make an ordinary moment extraordinary by putting yourself on the line and doing that thing you’ve been putting off.
Do yourself a favor and be straight up with the people that you are interested in, compliment strangers on the street if you like their outfit, say it now, don’t wait for the “perfect” moment to do or say something. Get up and fucking do it before you miss your chance entirely.