Modify timezones on forums posts
当前为
// ==UserScript==
// @name Brick Hill Timezone modifier
// @version 0.1
// @description Modify timezones on forums posts
// @author Noah Cool Boy
// @match https://www.brick-hill.com/*
// @grant none
// @namespace https://greasyfork.org/users/725966
// ==/UserScript==
(function () {
'use strict';
var HourFormat24 = true
var MMDDYYYYFormat = false
var elements = document.body.querySelectorAll("*")
var joinedRegex = /Joined ([0123]\d)\/([01]\d)\/(20\d{2})/ // REGEX FUCK YEAH
var postRegex = /([01]\d):([012345]\d) (AM|PM) ([0123]\d)\/([01]\d)\/(20\d{2})/ // MORE REGEX FUCK YEAH
var feedRegex = /([0123]\d)\/([01]\d)\/(20\d{2}) ([01]\d):([012345]\d) (AM|PM)/ // WHAT?! MORE REGEX?! AAAAAAAAAAAAAAAAAAAA
var commentRegex = /(20\d{2})\/([01]\d)\/([0123]\d) ([01]\d):([012345]\d) (AM|PM)/ // They use an other date format for comments, brick-hill ftw??
var transactionsRegex = /([0123]\d)-([01]\d)-(20\d{2})/
var gameRegex = /(20\d{2})\/([01]\d)\/([0123]\d)/
// Some people might find the above 4 lines of code sorcelery, but I love regex
function convertDateAndHour(day, month, year, hour, minutes, modifier) {
var date = new Date()
date.setUTCFullYear(year, month-1, day)
var a = convertHour(hour,minutes,modifier)
date.setUTCHours(a[0], a[1])
if (MMDDYYYYFormat) {
if (HourFormat24) {
return `${date.getHours()}:${date.getMinutes().toString().padStart(2,"0")} ${date.getMonth()+1}/${date.getDate()}/${date.getFullYear()}`
}
return `${convertToAMPM(date)} ${date.getMonth()+1}/${date.getDate()}/${date.getFullYear()}`
} else {
if (HourFormat24) {
return `${date.getHours()}:${date.getMinutes().toString().padStart(2,"0")} ${date.getDate()}/${date.getMonth()+1}/${date.getFullYear()}`
}
return `${convertToAMPM(date)} ${date.getDate()}/${date.getMonth()+1}/${date.getFullYear()}`
}
}
function convertDate(day,month,year) {
if(MMDDYYYYFormat) {
return month + "/" + day + "/" + year
} else {
return day + "/" + month + "/" + year
}
}
function convertHour(hour, minutes, modifier) {
hour = parseInt(hour)
if (hour == 12) {
hour = 0
}
if (modifier == "PM") {
hour += 12
}
return [hour, minutes]
}
function convertToAMPM(date){
if(date.getHours() < 12) {
return (date.getHours() % 12 || 12) + ":" + date.getMinutes().toString().padStart(2,"0") + " AM"
} else {
return (date.getHours() % 12 || 12) + ":" + date.getMinutes().toString().padStart(2,"0") + " PM"
}
}
elements.forEach(element => {
if (!element.innerHTML.includes("<") && element.innerHTML != "") {
var m = ""
if (m = element.innerHTML.match(joinedRegex)) {
element.innerHTML = "Joined " + convertDate(m[1],m[2],m[3])
} else if (m = element.innerHTML.match(postRegex)) {
element.innerHTML = convertDateAndHour(m[4],m[5],m[6],m[1],m[2],m[3])
} else if (m = element.innerHTML.match(feedRegex)) {
element.innerHTML = convertDateAndHour(m[1],m[2],m[3],m[4],m[5],m[6])
} else if (m = element.innerHTML.match(transactionsRegex)) {
element.innerHTML = convertDate(m[1],m[2],m[3])
} else if(m = element.innerHTML.match(commentRegex)) {
element.innerHTML = convertDate(m[3],m[2],m[1],m[4],m[5],m[6])
} else if(m = element.innerHTML.match(gameRegex)) {
element.innerHTML = convertDate(m[3],m[2],m[1])
}
}
})
})();