import json import base64 from google.protobuf.timestamp_pb2 import Timestamp from datetime import datetime # Create and set timestamp (current time) ts = Timestamp() ts.GetCurrentTime() print("\nSaved timestamp:") print(f"Seconds: {ts.seconds}") print(f"Nanos: {ts.nanos}") # Serialize to binary serialized = ts.SerializeToString() # Encode as Base64 string b64_str = base64.b64encode(serialized).decode('utf-8') # Put into JSON with key "my_pb" json_out = json.dumps({"my_pb": b64_str}) print("JSON Output:") print(json_out) # === Now decode it back === data = json.loads(json_out) decoded_binary = base64.b64decode(data["my_pb"]) # Parse back into Timestamp ts_parsed = Timestamp() ts_parsed.ParseFromString(decoded_binary) # Print result print("\nParsed timestamp:") print(f"Seconds: {ts_parsed.seconds}") print(f"Nanos: {ts_parsed.nanos}") print(f"As datetime: {datetime.utcfromtimestamp(ts_parsed.seconds + ts_parsed.nanos / 1e9)}")