class DateTimeDiff
{
/// <summary>
/// Difference btweeen dates expressed in years, months and days.
/// </summary>
/// <param name="dtStartDate"></param>
/// <param name="dtEndDate"></param>
/// <param name="YearsDiff"></param>
/// <param name="MonthsDiff"></param>
/// <param name="DaysDiff"></param>
public static void TimeSpanToDate(
DateTime dtStartDate,
DateTime dtEndDate,
out Int32 YearsDiff,
out Int32 MonthsDiff,
out Int32 DaysDiff
)
{
bool bRegularOrder = true; // is the start date before end date
if (dtEndDate < dtStartDate) {
// if the order of dates is reversed, dates are reversed, then difference is computed
// however, we remember that order is reversed, so at the end we put minus before all results componenet
DateTime d3 = dtStartDate;
dtStartDate = dtEndDate;
dtEndDate = d3;
bRegularOrder = false;
}
// compute difference in total months
MonthsDiff = 12 * (dtEndDate.Year - dtStartDate.Year) + (dtEndDate.Month - dtStartDate.Month);
// based upon the days
// adjust months & compute actual days difference
if (dtEndDate.Day < dtStartDate.Day) {
// check if both dates are the last day in the month
if (dtStartDate.Day == DateTime.DaysInMonth(dtStartDate.Year, dtStartDate.Month)
&& dtEndDate.Day == DateTime.DaysInMonth(dtEndDate.Year, dtEndDate.Month)) {
DaysDiff = 0; // whereas month number remains unchanged
}
else {
MonthsDiff--;
Int32 iBrojDanaPrethodnogMesecaZavrsnogDatuma = DayInMonthOfPreviousMonth(dtEndDate);
DaysDiff = Math.Max(0, iBrojDanaPrethodnogMesecaZavrsnogDatuma - dtStartDate.Day)
+ dtEndDate.Day;
}
}
else {
DaysDiff = dtEndDate.Day - dtStartDate.Day;
}
// compute YearsDiff & actual MonthsDiff
YearsDiff = MonthsDiff / 12;
MonthsDiff -= YearsDiff * 12;
// if the order was reversed, put minus sign before all componenet results
if (!bRegularOrder) {
YearsDiff = -YearsDiff;
MonthsDiff = -MonthsDiff;
DaysDiff = -DaysDiff;
}
}
private static Int32 DayInMonthOfPreviousMonth(DateTime dt)
{
Int32 month = dt.Month;
Int32 year = dt.Year;
// previous month
month--;
if (month == 0) {
month = 12;
year--;
}
return DateTime.DaysInMonth(year, month);
}
}
To seprate the color channels:
* R = 0xFC3343 >> 16
* G = (0xFC3343 >> 8 ) & 0xFF
* B = 0xFC3343 & 0xFF
To combine them:
* RGB = (0xFC << 16) + (0×33 << 8 ) + 0×43
# snippet: progress_bar.sh
# version: 0.02
# author: ksaver (at identi.ca)
# license: http://creativecommons.org/licenses/BSD/
# sets: progress_bar function
# arguments: progress_bar function: optional arguments "Text" and width.
# "Text": Any informative text string.
# Width: An integer number, is the max width for the progress bar.
# usage: Use into a script:
# source progress_bar.sh
# a) progress_bar "Counting:" 25 <<< $PERCENT
# b) for i in {1..100}; do echo $i; sleep 1; done |progress_bar "" 20
# output: Counting: [ ============> ] 50%
function progress_bar()
{
while read PERCENT
do
COUNT=0
FOO='>'
BAR=''
CHAR='=' # Change by "#", "|" or any character.
TEXT=${1:-"Progress:"} # Sets default value to var $TEXT
WIDTH=${2:-40} # Sets default value to var $WIDTH
PROGRESS=$(($PERCENT*$WIDTH/100))
while [ $COUNT -lt $(($PROGRESS+1)) ]
do
printf "\r\t$TEXT [ %s%s ] $PERCENT%% " ${BAR} ${FOO}
BAR="${BAR}$CHAR"
COUNT=$(($COUNT+1))
done
done
echo " Done."
}
add_filter('admin_footer_text', 'remove_footer_admin'); //change admin footer text
function remove_footer_admin () {
echo "Custom Text or leave empty";
}