Yes, it's possible.The trigger part is tricky one -- since this changes with time, the only way to implement this is using measure - for every product in your specific category track if it is available or not. This is sql to define such measure:
SELECT ps.id_product, 1 AS is_available
FROM tb_product_shop ps
INNER join tb_category_product pc ON (ps.id_product = pc.id_product)
WHERE pc.id_category = 5555
AND now() > ps.available_date
This will return list of every available product in category with id 5555
With this measure in place, you can use trigger Measure value changed that will react when the result of that sql changes. When some product in category 5555 becomes available, sql result will include this product, and rule will be triggered.
You can now do whatever you want. To remove product from category, you will have to use custom sql action and execute this sql:
DELETE FROM tb_category_product
WHERE id_product = {id}
AND id_category = 5555
Where {id} is a placeholder. You will need to bind this to product ID:
You can have a look at my demo account, I've create this rule there (for category 2, not 5555)