显示时区

This commit is contained in:
xianyi
2026-01-14 14:56:01 +08:00
parent d83ca038c7
commit 1bd10694bf

View File

@@ -32,6 +32,7 @@ export default function HomeScreen() {
const [matches, setMatches] = useState<Match[]>([]);
const [loading, setLoading] = useState(true);
const [loadingLeagues, setLoadingLeagues] = useState(false);
const [now, setNow] = useState(() => new Date());
// Selection States
// 默认足球
@@ -51,6 +52,12 @@ export default function HomeScreen() {
loadLeagues();
}, []);
// 当前时间:每秒刷新(用于展示“现在时间/时区”)
useEffect(() => {
const id = setInterval(() => setNow(new Date()), 1000);
return () => clearInterval(id);
}, []);
// Load Matches when sport or date changes
useEffect(() => {
if (selectedSportId !== null) {
@@ -58,6 +65,23 @@ export default function HomeScreen() {
}
}, [selectedSportId, selectedDate]);
const timezoneLabel = useMemo(() => {
// 仅展示 UTC 偏移(不展示时区名)
const offsetMin = -now.getTimezoneOffset();
const sign = offsetMin >= 0 ? "+" : "-";
const abs = Math.abs(offsetMin);
const hh = String(Math.floor(abs / 60)).padStart(2, "0");
const mm = String(abs % 60).padStart(2, "0");
return `UTC${sign}${hh}`;
}, [now]);
const nowTimeText = useMemo(() => {
const hh = String(now.getHours()).padStart(2, "0");
const mm = String(now.getMinutes()).padStart(2, "0");
const ss = String(now.getSeconds()).padStart(2, "0");
return `${hh}:${mm}`;
}, [now]);
// Load Leagues when sport changes
useEffect(() => {
if (selectedSportId !== null) {
@@ -232,8 +256,7 @@ export default function HomeScreen() {
{selectedDate.getDate()}
</ThemedText>
<ThemedText style={styles.dateMonthText}>
{selectedDate.getHours()}:
{selectedDate.getMinutes().toString().padStart(2, "0")}
{timezoneLabel} {nowTimeText}
</ThemedText>
</TouchableOpacity>
) : (
@@ -364,10 +387,12 @@ const styles = StyleSheet.create({
},
dateDayText: {
fontSize: 16,
lineHeight: 16,
fontWeight: "bold",
},
dateMonthText: {
fontSize: 10,
fontSize: 12,
lineHeight: 12,
opacity: 0.6,
},
listContent: {